基礎知識淺談:javascript:void(0)的作用示例介紹
阿新 • • 發佈:2020-11-29
異常
異常(Exception)
異常指的是在程式執行過程中發生的異常事件,通常是由外部問題(如硬體錯誤、輸入錯誤)所導致的
人做事一般都不會一帆風順,會出現意外或者突發情況
檢查性異常:檢查性異常是由於使用者輸入和問題引發的異常,這是程式猿無法預見的,這些異常在編譯時不能被簡單的忽略
執行時異常:執行時異常時可能被程式猿避免的問題,而這些異常在編譯時能被簡單的忽略
錯誤(Error)
錯誤不是異常,而是脫離程式源控制的問題,錯誤在程式碼中通常被忽略,一般都是java虛擬機器生成的
異常與錯誤的區別
異常(Exception)都是執行時的。編譯時產生的不是異常,而是錯誤(Error)。
最開始大家都將程式設計導致的錯誤(Error)認定為不屬於異常(Exception)。
但是一般都將Error作為異常的一種,所以異常一般分兩類,Error與Exception。
出現error一般java虛擬機器都會選擇終止執行緒,而出現Exception一般都在程式中處理
異常的結構
他們的超類(最大的類)是Throwable,有兩個重要的子類Exception和Error,Exception包括了程式的編譯和執行時異常,Error一般都是由於jvm的原因導致的,所以要儘量的避免出現Error因為它屬於嚴重的錯誤
異常的處理機制
捕獲異常
public class Exception { public static void main(String[] args) { int a=0; int b=1; try { //監控區域 System.out.println(b/a); }catch (java.lang.Exception e){ //捕獲異常,catch括號裡面是想要捕獲的異常型別 System.out.println("被除數不能為0"); }finally { //一般用來關閉資源,無論如何fanally下面的程式碼塊都會執行 System.out.println("finally"); } } }
注意點:
- try裡面的程式碼發生異常,就會去catch尋找適合的異常型別,然你輸出catch的程式碼塊
- catch程式碼塊可以有多個,但是catch裡面的捕獲異常型別必須從小到大的異常類
- idea的快捷鍵ctrl+alt+t
- try,catch,finally,可以少一個catch,可以少一個finally,但是必須要有try和其中一個
丟擲異常
public class Exception { public static void main(String[] args) { //一般向上丟擲異常,呼叫時實現try-catch try { new Exception().test(); } catch (ArithmeticException e) { e.printStackTrace(); //列印異常資訊 } } //處理不了這個異常,方法上丟擲異常,交給呼叫的類實現try-catch public void test() throws ArithmeticException{ System.out.println(1/0); throw new ArithmeticException(); //一般在方法中使用,主動的丟擲異常 } }
自定義異常
一般java內建的異常夠我們使用了,但是使用者也可以自定義異常
自定義異常的類
public class MyException extends java.lang.Exception {
private int detail; //定義一個變數
public MyException(int message) { //使用構造方法接受傳進來的值
this.detail = message; //將私有的變數值等於傳進來的值
}
@Override
public String toString() { //列印輸出資訊
return "MyException{" +
"detail='" + detail + '\'' +
'}';
}
}
測試類
public class Test {
static void test(int a) throws MyException {
if(a>10){ //當傳進來的值大於10
throw new MyException(a); //呼叫自定義異常的類中構造器的方法
}
System.out.println(a); //輸出傳進來的值
}
//要麼給這個方法往上丟擲,要麼實現try-catch
public static void main(String[] args) {
try {
test(11); //呼叫靜態test的方法
} catch (MyException e) {
System.out.println("出現異常"+e); //輸出自定義類中的列印輸出方法
//當我們呼叫 print 或者 println 列印一個物件時,它會打印出這個 物件的 toString()的最終根源
//不懂的可以看看百度
}
}
}