(JAVA学习笔记) 异常处理
生活随笔
收集整理的這篇文章主要介紹了
(JAVA学习笔记) 异常处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 什么是異常
- 異常分類
- 異常體系結構
- Error
- Exception
- Error和Exception的區別:
- 異常處理機制
- 代碼演示
- 自定義異常
- 代碼演示
什么是異常
- 異常指程序運行中出現的不期而至的各種情況,如:文件找不到,網絡連接失敗,非法參數等。
- 異常發生在程序運行期間,它影響了正常程序執行流程。
異常分類
要理解Java異常處理是如何工作的,需要掌握以下三種類型的異常:
異常體系結構
- Java把異常當做對象處理,并定義一個基類java.lang.Throwable作為所有異常的超類
- 在Java API中已經定義了許多異常類,這些異常類分為兩大類,錯誤Error和Exception。
Error
- Error類對象由Java虛擬機生成并拋出,大多數錯誤與代碼編寫者所執行的操作無關。
- Java虛擬機運行錯誤(Virtual MachainError),當JVM不再有繼續執行操作所需的內存資源時,將會出現OutOfMemoryError。這些異常發生時,Java虛擬機(JVM)一般會選擇線程終止。
- 還有發生在虛擬機試圖執行應用時,如類定義錯誤(NoClassDefFoundError),連接錯誤(LinkageError)。這些錯誤是不可查的,因為它們在應用程序的控制和處理能力之外,而且絕大多數是程序運行時不允許出現的情況。
Exception
在Exception分支中有一個重要的子類RuntimeException(運行時異常)
- ArrayIndexOutOfBoundsException(數組下標越界)
- NullPointerException(空指針異常)
- ArithmeticException(算術異常)
- MissingResourceException(丟失資源)
- ClassNotFoundException(找不到類)等異常,這些異常是不檢查異常,程序中可以選擇捕獲處理,也可以不處理。
這些異常一般是由程序邏輯錯誤引起的,程序應該從邏輯角度盡可能避免這類異常的發生
Error和Exception的區別:
- Error通常是災難性的致命的錯誤,是程序無法控制和處理的,當出現這些異常時,Java虛擬機(JVM)一般會選擇終止線程;Exception通常請款下是可以被程序處理的,并在程序中應盡可能的去處理這些異常 。
異常處理機制
- 拋出異常
- 捕獲異常
- 異常處理的五個關鍵字:try,catch,finally,throw,throws
代碼演示
try,catch,finally
public class Test1 {public static void main(String[] args) {int a = 1;int b = 0;//假設要捕獲多個異常,異常范圍必須從小到大!//ctrl+alt+T 捕獲異常快捷鍵try {//try監控區域System.out.println(a/b);}catch (Error e){//catch(想要捕獲的異常類型),捕獲異常System.out.println("Error");}catch (Exception e) {System.out.println("Exception");}catch (Throwable t){System.out.println("Throwable");}finally {//處理異常善后工作,無論是否捕獲到異常,最后都會執行System.out.println("finally");}} }
throw,throws
自定義異常
使用Java內置的異常類可以描述在編程時出現的大部分異常情況。除此之外,用戶還可以自定義異常。用戶自定義異常類,只需繼承Exception類即可。
在程序中使用自定義異常類,大體可分為以下幾個步驟:
代碼演示
自定義異常類:
//自定義的異常類,繼承Exception public class MyException extends Exception{private int number;public MyException(int a){this.number =a;}//alt+insert toString,打印異常信息@Overridepublic String toString() {return "MyException{" +"number=" + number +'}';} }測試類:
public class Test {public static void main(String[] args) {try {test(11);} catch (MyException e) {System.out.println("MyException------"+e);}}//可能會存在異常的方法static void test(int a) throws MyException {System.out.println("傳遞的參數為"+a);if(a>10){throw new MyException(a);//拋出異常}System.out.println("OK");} }總結
以上是生活随笔為你收集整理的(JAVA学习笔记) 异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (JAVA学习笔记) 接口
- 下一篇: (网络编程)InetAddress(表示