java异常处理机制_Java编程中的异常机制
本文旨在以初學者的角度來學習Java異常的知識,盡量簡單,一些細枝末節的知識不會講述,但不影響對知識的掌握。
(比如try-catch可以嵌套,不太會這么用)
1.什么是異常
我們先舉個例子
int在IDE里輸入這樣一個statement,靜態檢查沒有發現其錯誤。運行后發現拋出算數類異常。
Exception in thread "main" java.lang.ArithmeticException: /by zero“異常”可以理解為字面意思,通常指正常情況無法處理的異常事件。
不過異常和錯誤不同,程序員無法處理error,如VirtualMachineError、OutOfMemoryError,而Exception本身可以被程序解決,如NullPointException、ArithmeticException、ArrayIndexOutOfBoundException
異常與錯誤都繼承了Throwable類,整體關系如下圖:
Exception,大致可以分為兩類
- RuntimeException 運行時異常 不可檢查
- OtherException 編譯期異常 可檢查
程序員最需要的關心的:
- 不是Error,因為大部分遇到了就自認倒霉束手無策
- 不是RuntimeException,根本不可查
- 而是OtherException,可查異常;可以通過try-catch捕獲異常,或者在方法上加throws拋出異常等
2.異常處理機制
上面談到對于OtherException可查異常可以try-catch捕獲,或者throws拋出異常。接下來就詳細介紹如何使用
2.1 try-catch
trytry-catch中可以有多個catch,處理時將依次匹配,注意是依次依次依次,重要的事情說三遍!,一旦先匹配上了,后面的catch就不再匹配,程序員需當心順序(這里有什么技巧,歡迎大佬補充)
2.2 拋出異常
使用方法:比如有一個靜態方法a,在方法名后添加throws IOException(這是一個可檢查異常),那么在調用它時,作為一個可檢查異常,那么必須要對它try-catch的。如果像下面這樣沒有try-catch,會出現什么情況呢?
public根據第一節可知,可檢查異常是編譯期異常,我使用的工具Intellij IDEA就會報錯,不讓我通過。只要給它套上一層外衣就好了:
trycatch里的Exception類一定要和方法拋出的類是同一個類,或者有從屬關系(如IOException是Exception的子類)
有一個有趣的問題,之前我說過只有可檢查類有拋出異常的必要,如果我throws一個不可檢查的異常會發生什么呢?
public我在這里先不說結果,感興趣的小伙伴可以自己嘗試一下。(不理解結果的,可以私信我)
注意:throws與throw的區別
我的理解是,
- throws只是一個保障機制,要求可檢查異常必須得到檢查。至于是不是真的拋出了異常,還一定。
- throw才是真正的拋出異常,就算有時候方法沒有聲明throws(不過建議寫,可讀性高)。
另外,Java自定義異常類的原理類似,都派生自Exception或某個更小的Exception,有空單獨寫一篇自定義類的常見用法和注意事項。
總結
以上是生活随笔為你收集整理的java异常处理机制_Java编程中的异常机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不在 sudoers 文件中。此事将被报
- 下一篇: python办公自动化excel_pyt