1. 程式人生 > 其它 >|NO.Z.00067|——————————|BigDataEnd|——|Java&集合類庫.V03|----------------------------------------------|Java.v03|異常機制.v03|異常捕獲|實現|

|NO.Z.00067|——————————|BigDataEnd|——|Java&集合類庫.V03|----------------------------------------------|Java.v03|異常機制.v03|異常捕獲|實現|



[BigDataJava:Java&集合類庫.V03]                                                                             [BigDataJava.核心類庫] [|章節一|集合類庫|異常機制.三|異常捕獲的實現|]








一、異常捕獲實現
### --- 注意事項

——>        a.當需要編寫多個catch分支時,切記小型別應該放在大型別的前面;
——>        b.懶人的寫法:
——>        catch(Exception e) {}
——>        c.finally通常用於進行善後處理,如:關閉已經開啟的檔案等。
### --- 執行流程

——>        try {
——>            a;
——>            b; - 可能發生異常的語句
——>            c;
——>        }catch(Exception ex) {
——>            d;
——>        }finally {
——>            e;
——>        }
——>        當沒有發生異常時的執行流程:a b c e;
——>        當發生異常時的執行流程:a b d e;
二、程式設計程式碼
package com.yanqi.task16;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class ExceptionCatchTest {

    public static void main(String[] args) {

        // 建立一個FileInputStream型別的物件與d:/a.txt檔案關聯,開啟檔案
        FileInputStream fis = null;
        try {
            System.out.println("1");
            // 當程式執行過程中發生了異常後直奔catch分支進行處理
            fis = new FileInputStream("d:/a.txt");
            System.out.println("2");
        } catch (FileNotFoundException e) {
            System.out.println("3");
            e.printStackTrace();
            System.out.println("4");
        }
        // 關閉檔案
        try {
            System.out.println("5");
            fis.close();
            System.out.println("6");
        } /*catch (Exception e) {
            e.printStackTrace();
        }*/ catch (IOException e) {
            System.out.println("7");
            e.printStackTrace();
            System.out.println("8");
        } catch (NullPointerException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }

        System.out.println("世界上最真情的相依就是你在try我在catch,無論你發神馬脾氣我都默默承受並靜靜的處理,到那時再來期待我們的finally!");
        // 當程式執行過程中沒有發生異常時的執行流程:1 2  5 6  世界上...
        // 當程式執行過程中發生異常又沒有手動處理空指標異常時的執行流程:1 3 4  5  空指標異常導致程式終止
        // 當程式執行過程中發生異常並且手動處理空指標異常時的執行流程: 1 3 4 5 世界上...

        // 手動處理異常和沒有處理的區別:程式碼是否可以繼續向下執行
    }
}
三、編譯列印
D:\JAVA\jdk-11.0.2\bin\java.exe "-javaagent:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=58506:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath E:\NO.Z.10000——javaproject\NO.H.00001.javase\javase\out\production\javase com.yanqi.task16.ExceptionCatchTest
1
3
4
5
世界上最真情的相依就是你在try我在catch,無論你發神馬脾氣我都默默承受並靜靜的處理,到那時再來期待我們的finally!
java.io.FileNotFoundException: d:\a.txt (系統找不到指定的檔案。)
    at java.base/java.io.FileInputStream.open0(Native Method)
    at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:112)
    at com.yanqi.task16.ExceptionCatchTest.main(ExceptionCatchTest.java:16)
java.lang.NullPointerException
    at com.yanqi.task16.ExceptionCatchTest.main(ExceptionCatchTest.java:26)

Process finished with exit code 0








===============================END===============================


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart                                                                                                                                                    ——W.S.Landor



來自為知筆記(Wiz)