1. 程式人生 > >java異常基礎整理

java異常基礎整理

nbsp itl 解析錯誤 進行 ron 判斷 nts eof 出了

1、try-catch

e.printStackTrace(); 會打印出方法的調用痕跡,如此例,會打印出異常開始於TestException的第16行,這樣就便於定位和分析到底哪裏出了異常

技術分享圖片

2、使用異常類的父類進行catch

FileNotFoundException是Exception的子類,使用Exception也可以catch住FileNotFoundException

3、多異常捕捉辦法1

catch (FileNotFoundException e) {
    System.out.println("d:/LOL.exe不存在");
    e.printStackTrace();
} 
catch (ParseException e) { System.out.println("日期格式解析錯誤"); e.printStackTrace(); }

多異常捕捉辦法2:另一個種辦法是把多個異常,放在一個catch裏統一捕捉

catch (FileNotFoundException | ParseException e) {}
//這種方式從 JDK7開始支持,好處是捕捉的代碼更緊湊,不足之處是,一旦發生異常,不能確定到底是哪種異常,需要通過instanceof 進行判斷具體的異常類型 if (e instanceof FileNotFoundException) System.
out.println("d:/LOL.exe不存在"); if (e instanceof ParseException) System.out.println("日期格式解析錯誤");

4、finally:無論是否出現異常,finally中的代碼都會被執行

5、throw

method2中需要進行異常處理
但是method2不打算處理,而是把這個異常通過throws拋出去
那麽method1就會接到該異常。 處理辦法也是兩種,要麽是try catch處理掉,要麽也是拋出去。
method1選擇本地try catch住 一旦try catch住了,就相當於把這個異常消化掉了,主方法在調用method1的時候,就不需要進行異常處理了

package exception;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
 
public class TestException {
 
    public static void main(String[] args) {
        method1();
 
    }
 
    private static void method1() {
        try {
            method2();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
 
    }
 
    private static void method2() throws FileNotFoundException {
 
        File f = new File("d:/LOL.exe");
 
        System.out.println("試圖打開 d:/LOL.exe");
        new FileInputStream(f);
        System.out.println("成功打開");
 
    }
}

java異常基礎整理