java例外處理
軟體程式在運行程序中,可能出現意外(Exception),運行中不期而至的問題,
- 檢查性例外:用戶錯誤或問題引起的例外,程式員無法預見的
- 運行時例外:可能被程式員避免的例外,可以在編譯時被忽略
- 錯誤:錯誤不是例外,而是脫離程式員控制的問題,錯誤在代碼中通常被忽略,例如堆疊溢位
java把例外當做物件來處理,基于java.lang.Throwable
api定義了許多例外類,主要分為錯誤(Error)和例外(Exception)兩類
部分如下圖:

error類物件由java虛擬機生成拋出,大多數與執行者無關
例如:
- OutOfMemoryError:虛擬機運行錯誤
- NoClassDefFoundError:類定義錯誤
- LinkageError:鏈接錯誤
例外:
運行時例外:

這些例外一般是程式邏輯錯誤引起的,和程式員有關
區別:
- Error是災難性的致命錯誤,程式無法控制,一般java虛擬機(jvm)會選擇終止執行緒
- Exception通常情況是可以被程式處理的
例外處理機制
五個關鍵詞:
try,catch,finally,throw,throws
int a = 1;
int b = 0;
//捕獲多個例外從小到大
try {//監控區域
System.out.println(a/b);
}catch (ArithmeticException e){//如果出現ArithmeticException錯誤
System.out.println("程式出現錯誤");
//列印錯誤跟蹤
System.out.println(e.fillInStackTrace());
System.exit(0);
}catch (Exception e){
System.out.println("程式出現錯誤11");
System.out.println(e.fillInStackTrace());
}finally {
//不論是否出現錯誤都執行
System.out.println("finally");
}
/*程式出現錯誤
java.lang.ArithmeticException: / by zero
finally
選中代碼塊快捷鍵ctrl+alt+t(surround with)
int a = 1;
int b = 0;
if(b==0){
throw new ArithmeticException();//主動拋出例外
}
}
/*out :Exception in thread "main" java.lang.ArithmeticException
*/
//方法拋出例外
int a = 1;
int b = 0;
isZero(b);
//假設這個方法處理不了例外,向上拋出例外
public static void isZero(int b) throws ArithmeticException{
if(b==0){
throw new ArithmeticException();
}
System.out.println("aa");
}
/* out:Exception in thread "main" java.lang.ArithmeticException
at com.xxx.Student.isZero(Student.java:12)
at com.xxx.Student.main(Student.java:7)
自定義例外
繼承Exception
public class MyException extends Exception{
//傳遞數字大于10
private int detail;
public MyException(int detail) {
this.detail = detail;
}
//列印例外資訊
@Override
public String toString() {
return "MyException{" +
"detail=" + detail +
'}';
}
}
//b=11
public static void isZero(int b) throws MyException {
if(b>10){
throw new MyException(b);
}
}
//out:MyException{detail=11}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/552618.html
標籤:其他
上一篇:Python多執行緒爬取鏈家房源,保存表格,實作資料可視化分析!
下一篇:返回列表
