java異常基礎整理
阿新 • • 發佈:2018-05-17
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異常基礎整理