ioexception異常怎么處理 Error與Exception有什么區(qū)別?
Error與Exception有什么區(qū)別?1)錯(cuò)誤都繼承自父類(lèi),而異常都繼承自。2)看JDK對(duì)和的解釋。也就是Error是Throwable的一個(gè)子類(lèi),用來(lái)標(biāo)記嚴(yán)重錯(cuò)誤。一個(gè)合理的應(yīng)用程序不應(yīng)該犯tr
Error與Exception有什么區(qū)別?
1)錯(cuò)誤都繼承自父類(lèi),而異常都繼承自。
2)看JDK對(duì)和的解釋。也就是Error是Throwable的一個(gè)子類(lèi),用來(lái)標(biāo)記嚴(yán)重錯(cuò)誤。一個(gè)合理的應(yīng)用程序不應(yīng)該犯try/catch這樣的錯(cuò)誤。大多數(shù)錯(cuò)誤都是不正常的,不應(yīng)該發(fā)生。也就是Exception是Throwable的一個(gè)子類(lèi),用來(lái)表示一個(gè)合理的程序想要捕捉的條件。即只是程序運(yùn)行狀況,不是嚴(yán)重錯(cuò)誤,鼓勵(lì)用戶(hù)程序去抓。
3)Error,RuntimeException及其子類(lèi)為uncheckedexceptions,其他所有異常類(lèi)為checkedexceptions。.checkedexc:通常被拋出一個(gè)可恢復(fù)的程序,最好使用一個(gè)程序來(lái)恢復(fù)這種異常。例如,文件未找到異常、解析異常等。Uncheckedexc:通常是一個(gè)不正常的現(xiàn)象。;如果一切正常就不會(huì)發(fā)生,但它確實(shí)發(fā)生了。如arrayindexoutofboundexception、classcastexception等。從語(yǔ)言本身的角度來(lái)看,程序不應(yīng)該捕捉這樣的異常。盡管終端程序員可以捕捉諸如RuntimeException之類(lèi)的異常并從中恢復(fù),但不鼓勵(lì)他們這樣做,因?yàn)檫@完全沒(méi)有必要。因?yàn)檫@種錯(cuò)誤本身就是bug,應(yīng)該修復(fù)。當(dāng)出現(xiàn)這種錯(cuò)誤時(shí),程序應(yīng)該立即停止執(zhí)行。因此,面對(duì)錯(cuò)誤和未檢查的異常,程序應(yīng)該自動(dòng)終止。程序員不應(yīng)該做try/catch這樣的事情,而應(yīng)該找出原因,修改代碼邏輯。
sockettimeoutexception如何解決?
在這種情況下,一般有以下幾種情況:
案例一:第三方服務(wù)的業(yè)務(wù)處理異常,可以自定義異常。
案例二:第三方服務(wù)處理業(yè)務(wù)超時(shí),即SocketTimeoutException異常。
案例三:連接第三方服務(wù)超時(shí),即ConnectionPoolTimeoutException異常。
案例4:連接第三方服務(wù)的連接池異常,即ConnectionPoolTimeout。
治療計(jì)劃:
情況一:根據(jù)第三方定義的信息,比如錯(cuò)誤碼,本地程序回滾相應(yīng)的事務(wù)。
其他條件:當(dāng)?shù)胤?wù)服務(wù)捕獲相應(yīng)的異常,并做相應(yīng)的事務(wù)處理。