一、處理異常的兩種方式 1.所有的編譯時異常,要求程式員在編寫程式階段,必須對它進行處理,如果不處理的話,編譯就會無法通過,處理異常有兩種方法:捕捉和聲明拋出。 2.捕捉:try.....catch....... 3.聲明拋出就是方法聲明的位置上使用throws關鍵字拋出異常。 4.所有Runti ...
一、處理異常的兩種方式
1.所有的編譯時異常,要求程式員在編寫程式階段,必須對它進行處理,如果不處理的話,編譯就會無法通過,處理異常有兩種方法:捕捉和聲明拋出。
2.捕捉:try.....catch.......
3.聲明拋出就是方法聲明的位置上使用throws關鍵字拋出異常。
4.所有RuntimeException的子類都是運行時異常,運行時異常程式員在編寫階段不需要對它進行處理。
5.編譯時異常發生的幾率比較高;運行時異常發生的幾率比較低。
6.所有的Exception的直接子類都是“編譯時異常”。
二、處理異常有兩種方式
1.聲明拋出 throws
2.捕捉 try.....catch.......
以下程式演示第一種方式:聲明拋出,在方法聲明的位置上使用throws關鍵字向上拋出異常。
package com.bjpowernode.java_learning; import java.io.*; public class D62_1_ { public static void main(String[] args) throws FileNotFoundException{ //創建一個文件輸入流,讀取文件 //java編譯器是如何知道以下的代碼在執行過程可能存在異常 //java編譯器是如何知道這個異常發生的幾率比較高呢? //java編譯器不是那麼智能,因為FileInputStream這個構造方法在聲明的位置上使用了 //throws FileNotFoundException; //FileInputStream fls = new FileInputStream("C:\\Users\\lenovo1\\Desktop\\微信公眾號運營-Java\\Java連載51-super關鍵字.docx"); // try{ m1(); //使用throws處理異常是不是真正處理異常而是推卸責任 //誰調用就會跑給誰 //上面的m1方法如果出現了異常,因為採用的是向上拋出,給了JVM,JVM遇到這個異常 //就會退出JVM,下麵的這個代碼不會執行 // }catch(FileNotFoundException e) { // System.out.println("出現了異常"); // } } public static void m1() throws FileNotFoundException{ m2(); } public static void m2() throws FileNotFoundException{ m3(); } public static void m3() throws FileNotFoundException{ //FileNotFound構造方法聲明位置上使用了throws(向上拋出) new FileInputStream("E:\\04.image\\timg.jpgu"); } }
異常出現了就一層一層往上拋。
再看一下使用try....catch......來處理這些異常
public static void main(String[] args) { //創建一個文件輸入流,讀取文件 //java編譯器是如何知道以下的代碼在執行過程可能存在異常 //java編譯器是如何知道這個異常發生的幾率比較高呢? //java編譯器不是那麼智能,因為FileInputStream這個構造方法在聲明的位置上使用了 //throws FileNotFoundException; //FileInputStream fls = new FileInputStream("C:\\Users\\lenovo1\\Desktop\\微信公眾號運營-Java\\Java連載51-super關鍵字.docx"); try{ m1(); //使用throws處理異常是不是真正處理異常而是推卸責任 //誰調用就會跑給誰 //上面的m1方法如果出現了異常,因為採用的是向上拋出,給了JVM,JVM遇到這個異常 //就會退出JVM,下麵的這個代碼不會執行 }catch(FileNotFoundException e) { System.out.println("出現了異常"); } }
三、源碼:
D62_1_ThrowsOfException.java
https://github.com/ruigege66/Java/blob/master/D62_1_ThrowsOfException.java
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關註微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,後臺回覆”禮包“,獲取大數據學習資料