JAVA中的異常處理
阿新 • • 發佈:2021-02-17
try…catch…finally… 處理異常 :
首先執行 try 中的程式碼,如果出現異常則由 catch 捕捉處理,最後執行 finally 中的程式碼,如果沒有異常,則直接順序執行 finally 中的程式碼。
public static void main(String[] args) {
int a = 1;
int b = 0;
try{
System.out.println(a/b);
}catch (ArithmeticException e) {
System.out.println("除數不能為0");
}catch (Exception e){ //捕獲異常,對異常進行處理
e.printStackTrace(); //列印異常資訊
}finally {
System.out.println("finally");
}
}
注意: 1. 無論是否出現異常,finally中的語句都會在最後執行,一般用於釋放資源 2. 當出現多個異常,可以按異常從小到大寫多個 catch 進行捕獲 3. finally 是可選的,catch 是必須的
throw 丟擲異常:
程式設計師可以通過throw語句手動顯式的丟擲一個異常,throw 語句一般寫在方法中,執行throw 語句的地方就是一個異常丟擲點。
public double divide(int a,int b){
if (b==0)
throw new ArithmeticException();
else
System.out.println(a/b);
}
注意: throw語句的後面必須是一個異常物件
throws 丟擲異常:
如果一個方法內部的程式碼會丟擲檢查異常(checked exception),而方法自己又沒有完全處理掉,則必須在方法後使用 throws 關鍵字宣告這些可能丟擲的異常。
public double divide(int a,int b) throws ArithmeticException{
return a/b;
}
throws 不同於 try…catch…finally,它僅僅是將函式中可能出現的異常向呼叫者宣告,而自己則不具體處理,採取這種異常處理的原因可能是方法本身不知道如何處理這樣的異常,或者說讓呼叫者處理更好,呼叫者需要為可能發生的異常進行捕獲處理。
自定義異常:
建立自定義異常的步驟:
1. 建立自定義異常類,這個類必須繼承 Exception 類
2. 在方法中可能出現異常的地方使用 throw 關鍵字丟擲異常
3. 如果在當前丟擲異常的方法中處理異常可以使用 try...catch 語句捕獲處理,否則在方法的宣告處使用 throws 關鍵字指明要丟擲給方法呼叫者的異常
4. 在出現異常方法的呼叫者處捕獲處理異常
public class MyException extends Exception{
private int detail;
public MyException(){
}
public MyException(int detail){
this.detail = detail;
}
@Override
public String toString(){
return "MyException {"+detail+"的值大於10}";
}
}
public class test {
public static void main(String[] args) {
int a = 20;
try{ //對異常方法進行捕獲處理
T(a);
}catch (MyException e){
e.printStackTrace();
}
}
public static void T(int a) throws MyException{ //把異常拋給異常方法呼叫者
if (a>10){
throw new MyException(a); //丟擲異常
}else {
System.out.println("傳遞的引數為:"+a);
}
}
}