---恢復內容開始---數據庫
異常的概述和分類
Throwable類是Java語言中全部錯誤或者異常的超類(也就是說,Java中全部的報錯都是繼承與Throwable的),也只有當對象是此類或者此類的子類的實例之一時,纔可以經過Java虛擬機或者Javathrow語句進行拋出。數組
main函數收到異常的時候,會有兩種處理方式:服務器
1.本身將該錯誤處理,讓後繼續執行代碼jvm
2.本身沒有針對的處理方式,只有將其交給main的jvm來處理ide
JVM有一個默認的異常處理機制,就將該異常進行處理,並將該異常的名稱、異常的信息、異常出現的位置打印在控制檯上,同時程序中止運行。函數
咱們使用try...catch...finally...來捕獲異常,而後呢,能夠繼續執行咱們的代碼this
可是呢,咱們使用throw拋出異常的話就會結束程序了spa
catch(能夠寫多個錯誤類名){} 固然咱們也能夠是定義多個catch指針
注意:全部的RuntimeException類及其子類的實例被稱爲運行是異常,其餘異常就是編譯時異常code
編譯是異常:
運行時異常:
Exception是一個繼承Throwable的子類
Throwable有幾個經常使用的方法:
package null0801_2026; public class Demo01 { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub Student std = new Student(11,"n1"); std.setAge(11); } } class Student{ private int age; private String name; public int getAge() { return age; } public void setAge(int age) throws Exception { if(age>10){ throw new Exception("不能大於10"); }else{ this.age = age; } } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Student [age=" + age + ", name=" + name + "]"; } public Student() { super(); // TODO Auto-generated constructor stub } public Student(int age, String name) { super(); this.age = age; this.name = name; } }
throw的使用場景:
在方法內部出現某種狀況,程序不能繼續執行,就用throw把異常對象拋出
thorws:
thorw:
特色:
finally咱們通常用於IO流操做中的釋放資源
1.final能夠修飾類-表示不能被繼承,能夠修飾方法-表示不能被重寫,修飾變量-表示只能賦值一次 2.finally是try語句中的一個語句體,不能單獨使用,通常咱們用做IO中的釋放資源 3.finalize是一個方法,當垃圾回收器肯定不存在對該對象的更多引用的時候,由對象的垃圾回收器調用此方法。
原則:若是本身能處理的問題就本身解決(try...catch),若是不能解決,就throws
如何自定義一個異常?例子:
package null0801_2026; public class AgeError extends RuntimeException{ public AgeError() { super(); // TODO Auto-generated constructor stub } public AgeError(String arg0, Throwable arg1, boolean arg2, boolean arg3) { super(arg0, arg1, arg2, arg3); // TODO Auto-generated constructor stub } public AgeError(String arg0, Throwable arg1) { super(arg0, arg1); // TODO Auto-generated constructor stub } public AgeError(String arg0) { super(arg0); // TODO Auto-generated constructor stub } public AgeError(Throwable cause) { super(cause); // TODO Auto-generated constructor stub } }