異常處理機制

異常處理機制知識點總結:

1.try包圍可能出錯範圍,catch 捕獲代碼拋出的錯誤,並解決

2.JVM在執行代碼過程中發現一個異常會實例化這種情況的異常實例,並將代碼整個執行過程完整設置到異常中來表示該錯誤報告,設置完畢後將異常拋出,若代碼有try包圍,則jvm會檢查catch中是否關注,關注交給catch解決,否則會將異常拋出方法之外

由調用當前方法的代碼解決該異常

3.爲了防止程序中斷最後加上Exception,但子類在上,父類在下。

4.finally塊定義在異常捕獲機制的最後,可以跟在try塊後,或最後一個catch塊之後
finally塊中的代碼一定執行,無論try塊中的代碼是否會拋出異常
一般把釋放資源等操作放在finally中,例如關閉流案例

5.當一個方法使用throw拋出一個異常,就要在方法上使用throws,聲明該異常的拋出以通知調用者解決,只有RuntimeException及其子類異常使用throw拋出時不強制要求。
其他異常都是強制要求的,必須使用throws聲明,否則編譯不通過, RuntimeException是常識錯誤,像空指針異常,太常見了,如果每次都是Exception,那麼就要try-catch,太麻煩。

6.重寫父類一個含有throws異常拋出聲明的方法時,子類該方法的throws的重寫原則
 1.不處理異常
 2.throws部分異常
 3.子類異常
 4.不可以拋出額外異常
 5.不可以父類異常
7.
-可檢查異常
 -非檢查異常

8. 當調用一個含有throws聲明異常拋出的方法時,編譯器要求必須處理該異常。處理手段兩種,同時不要在main方法上使用throws,不負責任
1.try-catch捕獲並處理
2.當前方法繼續使用throws聲明該異常的拋出

***************************************************************************************************
public class A {
public static void main(String[] args) {
System.out.println("程序開始了");
try{
String str="";
System.out.println(str.length());
System.out.println(str.charAt(0));
}catch(NullPointerException e){ 
System.out.println("出現了空指針");
}catch(StringIndexOutOfBoundsException e){
System.out.println("下標越界了");
}catch(Exception e){
System.out.println("反正就是出了個錯");
}
System.out.println("程序結束了");
}
}

public class B2 {
public static void main(String[] args) {
BufferedReader br=null;
try {
br=new BufferedReader(
new InputStreamReader(
new FileInputStream("src/day1/A.java")
)
);
String line=null;
while((line=br.readLine())!=null){
System.out.println(line);
}
} catch (Exception e) {
System.out.println("出錯了");
}finally{
if(br!=null){
try{
br.close();
}catch(Exception e){
}
}
}
}
}

package day01;
//年齡不合法異常是自定義異常,通常用於描述某個業務邏輯上出現的問題。

//名字應做到見名知意
public class illegalAgeException extends Exception{
private static final long serialVersionUID = 1L;
public illegalAgeException() {
super();
}
public illegalAgeException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);

}
public illegalAgeException(String message, Throwable cause) {
super(message, cause);
}
public illegalAgeException(String message) {
super(message);
}
public illegalAgeException(Throwable cause) {
super(cause);
}
}

public class Person {
private int age;
public int getAge() {return age;}
public void setAge(int age) throws illegalAgeException{
if(age<0||age>100){
throw new illegalAgeException("年齡不合法");
}
this.age = age;
}

}
public class C {
public static void main(String[] args) {
Person p=new Person();
try {
p.setAge(200);
} catch (illegalAgeException e) {
e.printStackTrace();
}
System.out.println("年齡爲"+p.getAge());
}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章