最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Java 異常機制

2021-10-12 15:12 作者:信碼由韁  | 我要投稿

【注】本文譯自:Java Exceptions - DZone Java

Java Exception

Java Exception 是為處理異常應(yīng)用程序行為而創(chuàng)建的類。在本文中,我將解釋如何使用 Java Exception 類以及如何在考慮現(xiàn)有 Java Exceptions 設(shè)計的情況下創(chuàng)建異常結(jié)構(gòu)。Java 異常概念是 Java 中的重要里程碑之一,每個開發(fā)人員都必須了解它。

Java 異常結(jié)構(gòu)比你想象的要有用

Java 異常的結(jié)構(gòu)非常有用,可以告訴開發(fā)人員一組重要的事情(如果開發(fā)人員正確使用此結(jié)構(gòu))。所以,在這里,您可以看到基本結(jié)構(gòu):


可以捕獲所有可能情況的主要父類是 Throwable,它有 2 個子類:Error 和 Exception。

Java Error

Java Error 代表異常情況。一旦出現(xiàn)錯誤,應(yīng)用程序可能會關(guān)閉。

Java Exception

與錯誤不同,Java 異常有機會從問題中恢復(fù)應(yīng)用程序,并嘗試保持應(yīng)用程序運行。異常也分為兩類:


異常由運行時和非運行時異常表示,也稱為已檢異常。此分類與錯誤異常非常相似,但在該分類中,已檢異常在恢復(fù)方面更為樂觀。

已檢和未檢異常

在 Java 中,有兩種類型的異常。已檢異常迫使開發(fā)人員創(chuàng)建處理程序異常或重新拋出它們。如果重新拋出已檢查的異常,則 java 函數(shù)必須在其簽名中聲明它。未檢異常 unline checked 不需要任何處理。 這樣的設(shè)計意味著無法處理未經(jīng)檢查的異常,并且注定會被拋出到頂級父類。


Error 異常調(diào)查

有兩種方法可以處理拋出的異常:在當(dāng)前方法中處理它或者只是重新拋出它。沒有比這更好的方法了:您可能有一個父處理程序或以某種方式處理它,例如創(chuàng)建重試邏輯。


好的、壞的、丑的

介紹完之后,我們可以將所有異常分為 3 組:Checked、Runtime 和 Error。主要思想是,他們每個人都會陷入不同的情況。最樂觀的是 Checked 異常。運行時將屬于恢復(fù)機會很小的情況。而且,最悲觀的是 Error。


Checked, Runtime, Error ... 然后呢?

了解異常類的類型后,我們可能會回答下一個問題:

  • 情況有多糟糕,問題的原因是什么。

  • 如何解決這個問題。

  • 我們需要重啟 JVM 嗎?

  • 我們需要重寫代碼嗎?

知道異常類,我們可以預(yù)測可能出錯的地方??紤]潛在的原因,我們可以假設(shè)問題的原因是什么以及如何解決它。讓我們回顧一下最流行的場景,看看這些異??梢愿嬖V我們什么。在接下來的段落中,我們將回顧著名的異常并調(diào)查潛在的代碼是什么。在我們的調(diào)查中,我們假設(shè)應(yīng)用程序足夠穩(wěn)定并且開發(fā)階段已經(jīng)完成和測試。

Error 異常調(diào)查

我們從最悲觀的案例或我們的丑男開始。Error?真的有那么丑嗎? 讓我們來看看最常見的 Java 錯誤:


因此,在大多數(shù)情況下,您需要做的就是更改 JVM 配置或添加缺少的依賴項。仍然存在需要更改代碼的情況,但它們不太可能在每種情況下應(yīng)用更改。


Checked 異常調(diào)查

對于受檢異常,我們期望有機會恢復(fù)問題;例如,再試一次。在這一部分,我們回顧最著名的已檢異常。提供的例外可能是彼此的父類,但是,在這里,我只列出最常見的案例,而不關(guān)心它們的關(guān)系:


好吧,有很多異常,但是,正如我所承諾的,我把最常見的異常放在這里。那么,這張表說明了什么?如果我們查看最可能的原因,我們會發(fā)現(xiàn)其中的大多數(shù)不僅不需要任何代碼更改,甚至不需要重新啟動應(yīng)用程序。所以,顯然,已檢異常應(yīng)該是好人。


Runtime 異常調(diào)查

最常見也是個人最悲觀的例外:運行時。Checked 和 Error 異常錯誤不會導(dǎo)致任何代碼更改。但是,在大多數(shù)情況下,運行時異常突出了代碼中的真正問題,如果不重寫代碼就無法修復(fù)這些問題。讓我們通過查看最流行的運行時異常來找出原因:


一個例子可能給人的印象是任何運行時異常都會導(dǎo)致應(yīng)用程序失敗。在大多數(shù)情況下,這是正確的,因為不更改代碼就無法恢復(fù)應(yīng)用程序。最終,運行時異常是我們的壞人,它會導(dǎo)致新的代碼更改、開發(fā)人員的壓力和業(yè)務(wù)損失。


些許批評

在這次審查期間,我們做出了一個重大假設(shè):代碼已準備好投入生產(chǎn)并經(jīng)過充分測試。但是,在實踐中,這很難實現(xiàn)。所以,我們所做的結(jié)論并不是 100% 可靠,但是代碼越穩(wěn)定,結(jié)果就越真實。

已檢異常和代碼污染

根據(jù)已檢查異常,設(shè)計開發(fā)人員必須使所有可恢復(fù)的異常都是可檢查的。因此,每次調(diào)用帶有已檢查異常簽名的方法都會為 Try Catch 結(jié)構(gòu)添加 3-4 行。這種方法使代碼變得丑陋且可讀性較差。就個人而言,我更喜歡使用運行時異常。即使在設(shè)計庫的情況下,您仍然可以在方法簽名中保留運行時異常,并在 API 中添加一些注釋。在這種情況下,您的 API 用戶將能夠決定如何處理它。


Java 異常機制的評論 (共 條)

分享到微博請遵守國家法律
奇台县| 兴文县| 黔江区| 观塘区| 西畴县| 四川省| 诏安县| 张家口市| 琼结县| 老河口市| 马山县| 阜城县| 旺苍县| 江西省| 木里| 莱芜市| 视频| 封丘县| 灵寿县| 黄石市| 教育| 连江县| 泊头市| 荆州市| 漾濞| 永安市| 龙游县| 松潘县| 阜宁县| 澄迈县| 新宾| 丰镇市| 河池市| 灵武市| 西丰县| 铜鼓县| 祁东县| 昆明市| 竹北市| 汾西县| 通州市|