1. 程式人生 > >使用try catch捕捉異常

使用try catch捕捉異常

/*

處理異常的第二種方式:捕捉 try...catch..

語法: try{
可能出現的異常的程式碼;
}catch(異常型別1 變數){
處理異常的程式碼;
}catch(異常型別2  變數1){
處理異常的程式碼
}

1.catch語句塊可以寫多個
2.但是從上到下catch,必須從小型別異常到大型別異常進行捕捉
3.上面的程式碼出現了異常,try語句塊的程式碼不再執行,直接進去catch語句



*/


import java.io.*;
public class fuck4{

public static void main(String[] args){

//以下程式碼編譯無法通過,因為FileNotFoundException沒有處理
try{
FileInputStream fls=new FileInputStream("c:/ab.txt");
}catch(ArithmeticException e){   //捕捉的異常是算術異常
}

//編譯通過
try{
FileInputStream fls=new FileInputStream("c:/ab.txt");
}catch(FileNotFoundException e){
}

//以下程式無法通過
//因為還有更多的IOException沒有處理 
try{
FileInputStream fls=new FileInputStream("c:/ab.txt");
fls.read(); 
}catch(FileNotFoundException e){
}

//編譯可以通過
try{

FileInputStream fls=new FileInputStream("c:/ab.txt");
fls.read(); 
}catch(FileNotFoundException e){
}catch(IOException e){
}


try{
//程式執行到這裡發生了FileNotFoundException型別的異常
//JVM會自動建立一個FileNotFoundException 的物件,
//將該物件中的記憶體地址賦給catch語句中的變數
FileInputStream fls=new FileInputStream("abc");

//上面的程式碼出現了異常,try語句塊的程式碼不再繼續執行,直接進入catch語句塊中執行
System.out.println("tttttt");
fls.read();

}catch(FileNotFoundException e){

//e記憶體地址指向堆中的那個物件是FileNotFoundException型別的
System.out.println("讀取的檔案不存在");

//FileNotFoundException將Object中的toString方法重寫
System.out.println(e);
}catch(IOException e){
System.out.println("其他IO異常");
}
System.out.println("ABC");



}


}