簡明 Java 錯誤處理機制

用個最簡單的例子來展現爲何須要錯誤處理,以及怎麼用。java

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

public class ThrowsTest {
    public static void main(String[] args) throws FileNotFoundException {
        
        try {
            throwsTest();
        } catch (FileNotFoundException e) {
            System.out.println("File is not found!");
            throw e;
        } catch (NullPointerException e) {
            System.out.println(e);
        }

        System.out.println("hi");
    }

    public static void throwsTest() throws FileNotFoundException,NullPointerException {
        new FileInputStream("shiyanlou.file");

        throw new NullPointerException("have a try!");

    }
}

上面的代碼中, throwsTest 拋出了兩個 exception:一個錯誤是由它調用的方法 FileInputStream 拋給它的,另外一個是它本身拋出的。函數

在 main 函數中,經過 try-catch 來捕捉這兩個 exception 並處理。spa

基本原則是:code

1. 拋出的 exception 確定會被 catch。blog

2. catch 到的 exception 能夠當場處理掉,則 exception 被終止。繼承

3. catch 到的 exception 也能夠再 throw 給上一級調用者處理。io

4. 若是一級級往上拋,最終由 JVM 來 catch 的話,就是直接終止程序並打印 stack frame 錯誤。class

咱們使用 exception 的核心目的,就是爲了不第 3 中狀況發生。import

能夠想象,若是由於某個文件沒有找到,咱們的軟件就直接崩潰了,這是件很難接受的事情;從使用角度來說,大不了從新指定路徑。軟件

因此,咱們要努力作好前 3 件事。

 

前輩總結的 exception 使用心得:

exception 的繼承關係:

 

發揮問題:是否是能夠本身定義 Throwable ?

相關文章
相關標籤/搜索