java web 在JAVA中捕獲異常后throw自定義異常是不優(yōu)雅的嗎?
在JAVA中捕獲異常后throw自定義異常是不優(yōu)雅的嗎?事實(shí)上,這種方法在很多框架中都有使用1。Rethrow自定義異常,用于更好地隔離異常,識(shí)別異常類型、ID、自定義消息和日志2。對(duì)第三方庫(kù)的異常進(jìn)
在JAVA中捕獲異常后throw自定義異常是不優(yōu)雅的嗎?
事實(shí)上,這種方法在很多框架中都有使用
1。Rethrow
自定義異常,用于更好地隔離異常,識(shí)別異常類型、ID、自定義消息和日志
2。對(duì)第三方庫(kù)的異常進(jìn)行打包和抽象,以保持與框架異常定義的一致性,方便框架處理不同的異常
3。Restful API,統(tǒng)一異常管理
謝謝
!錯(cuò)誤和異常都繼承自throwable。
錯(cuò)誤是指程序不必處理的系統(tǒng)級(jí)錯(cuò)誤和異常,如內(nèi)存溢出,這是程序無(wú)法處理的;
異常是指程序需要捕獲或處理的異常,這是編程或編碼中的問題。
未檢查的異常:錯(cuò)誤和runtimeException及其子類。Java編譯器在編譯時(shí)不會(huì)發(fā)現(xiàn)此異常,因此不需要程序來(lái)處理此異常。當(dāng)然,try、catch和finally也可以用來(lái)處理這個(gè)異常。當(dāng)出現(xiàn)這樣的異常時(shí),大多數(shù)都是代碼編寫中的問題,應(yīng)該通過修改代碼而不是捕獲來(lái)解決,比如ClassCastException、NullPointerException等
Checked exception:除了error和runtimeException。Java編譯器在編譯時(shí)會(huì)發(fā)現(xiàn)這種異常,因此必須對(duì)這種異常進(jìn)行預(yù)處理,即使用try、catch和finally來(lái)處理這種異常,或者用throws子句將其拋出到上層,否則編譯將無(wú)法通過。這種異常通常是由運(yùn)行環(huán)境引起的。