在Java中处理异常
每個程序員都希望編寫一個完美的程序。 也就是說,程序運行時沒有任何障礙。
好吧,如果希望是馬,乞g就會騎。 除了程序員的所有愿望之外,有時還會發生無法預料的情況。
這些不可預見的情況在Java中通常被歸類為“例外”。 異常會干擾我們的代碼的平穩運行,并在不處理的情況下終止程序。 處理異常涉及在異常發生時編寫另一組代碼來管理這些異常。
有兩種例外,一類是我們無能為力的,另一類是我們可以做的。 對于第二類,正確處理異常非常重要,因為我們不希望代碼因異常而終止。
當我們的代碼以意外的方式運行時,就會發生異常(這就是為什么可以將異常視為一種錯誤)。 這些意外的方法可能是將數字除以零,嘗試以不存在的索引訪問數組或試圖訪問不存在的對象。 所有這些方式都會導致生成異常代碼,這些代碼不遵循正常路徑或處理程序設計。
發生異常時,將向用戶報告說明,以解釋引起異常代碼的原因。 報告此異常的行為稱為引發異常。
異常處理是Java不可或缺的一部分。 每個Java開發人員都需要了解如何處理異常,以便他們可以編寫干凈,優美的代碼 。
拋出異常
一輛使用劣質燃油的汽車會散發出煙,以便我們知道出了點問題– Java程序中引發的異常等效于該煙。 當Java程序中發生異常時,需要將異常報告給系統用戶,以便用戶確切了解出了什么問題。 通過向用戶報告此異常,我們引發了異常。
程序員可以導致引發異常,或者Java語言引發異常。 當程序的用戶執行某些已明確啟動為程序中的非法或錯誤操作時,程序員可能引發異常。 同樣,如果程序的輸入違反了一些基本的算術或編程原理(例如,將數字除以零),并且程序運行的環境出現了內存不足等問題,則Java語言可能會引發一些異常。
因此,當Java程序引發異常時,會發生什么? 創建任何Throwable子類的對象,該對象根據異常的類型來解釋異常的性質。 例如,可以引發ArithmeticException對象,這表明發生了算術錯誤。
可以從Java程序引發的任何異常都被視為Throwable類的對象,該類分為兩個子類: Exception類和Error類。
程序員無法處理的異常在Error類中。 您可以修復的異常在Exception類中。
錯誤類別
有些例外就像自然災害一樣,它們會發生,而您只需要接受它們的發生即可。 屬于Error類的異常是您無法修復的事情。 它們也只是發生,您必須接受它們的發生。
Error類異常通常用于表明您的代碼運行環境存在問題。 這些類型的問題可能包括內存不足-內存不足的情況不是您編寫代碼來處理的事情,因此您不能簡單地對其進行處理。 這些異常只會終止您的程序。
錯誤類異常是通過重新啟動程序來修復的,但是只有在導致程序終止的環境中的問題得到解決之后,才能解決。 在我們的示例中,對該錯誤的修復可能包括手動恢復用于執行程序的空間。
只是知道Java不能解決Error類的異常。 程序所有者必須在代碼終止后執行某些操作,以確保程序可以再次運行。
例外類別
在Exception類下發生時可以處理的異常。 Java編程語言具有多種異常,可以在子類RuntimeException下進行處理。
這些例外包括被零除的例外,當您嘗試將數字除以零時會發生。
之所以能夠處理Exception類的異常,是因為它們表示某些問題發生在代碼內部,而不是在運行代碼的環境中。
您可以通過編寫代碼來確保此類異常不會首先發生,從而避免此類異常;如果確實發生此類異常,則可以編寫代碼以確保這些異常不會終止您的程序執行。 為了處理異常,將它們放置在try塊中 , 稍后我們將介紹它。
錯誤類和異常類之間的基本區別在于,錯誤類將導致程序終止并且無法對其進行處理,但是如果正確處理了異常,則可以使異常類不導致程序終止。
涉及異常的重要關鍵字
Java中的異常處理可以通過使用一些關鍵字(例如try,catch,throw,throws和finally)來實現 。 這些關鍵字用于管理如何引發和處理異常。
任何可能導致引發異常的代碼都寫入try塊中。 可能引發異常的代碼通常處理輸入值,但不能保證始終是程序員想要的方式。
想象一個試圖走路的嬰兒。 您只需將手放在嬰兒周圍,以確保嬰兒不會跌落并受傷。 同樣,try塊用于包圍在運行時可能引發異常的代碼。
在try塊之后緊接著是catch塊, finally塊或兩者。
catch塊完全按照其名稱的含義執行操作:它捕獲try塊中引發的異常。 由于可以引發許多異常,因此catch塊必須指定要處理的異常類。
在catch塊之外,還有finally塊,當try塊完成時, finally塊才起作用。 因此,finally塊等待try塊執行。 請注意,try塊之后可以是catch塊,finally塊或兩者的組合。 如果try塊具有catch塊,則最后在catch后面運行,否則,finally塊在try塊之后立即運行。
因此,將finally塊想象為try塊的最終手段。 finally塊通常用于處理try塊可能未正確利用的資源。
通過使用方法標題中的throws關鍵字,方法或一段用Java執行特定功能的代碼可以拋出一種異常。
Error或RuntimeException及其子類中的異常無需包含在throws語句中。 它們被歸類為“未經檢查的異常”,這些異常應以任何可能的方式加以阻止,并且不得有意識地允許其發生。
程序中可能發生的未經檢查的異常數量如此之大,以至于我們無法將所有未經檢查的異常都扔進一個方法中。 這將導致該方法失去其清晰度,因此Java假定運行程序的程序員沒有故意拋出這些類型的異常。
發生問題時,每種方法都可能引發未檢查的異常,因此無需在throws語句中添加未檢查的異常。
throw關鍵字用于專門在方法中引發異常。 它只是用于動詞throw中的常規用法:它拋出Throwable Class的對象。 您不能拋出不在Throwable類或其任何子類中的對象。 注意不要使用throw關鍵字拋出Unchecked Exceptions。 使用throw關鍵字引發Checked Exception。
為什么要處理異常?
因為我們編寫的每個程序都會在某一時刻拋出異常,所以了解如何處理它們很重要,這樣一來,異常不會總是在程序中每次發生時都終止 。
了解屬于錯誤類或異常類的異常之間的區別可以幫助您確定是否可以解決問題。
在編寫用于處理異常的代碼時,請確保您理解并正確使用了try,catch和finally塊,并記住盡力防止拋出未經檢查的異常。
學習如何在異常發生之前進行處理將有助于您編寫簡潔,優雅的代碼。
翻譯自: https://www.javacodegeeks.com/2017/12/handling-exceptions-java.html
總結
以上是生活随笔為你收集整理的在Java中处理异常的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓解压软件(解压软件安卓)
- 下一篇: 安卓雅虎天气1.30.61(安卓雅虎)