java異常:異常處理–try-catch結構詳解

在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

從鍵盤接收兩個整數,輸出兩數的商:

package java_exception;
import java.util.Scanner;
public class TryDemoOne {
    public static void main(String[] args) {
        //定義兩個整數,鍵盤輸入兩個整數,輸出兩數之商
        Scanner input = new Scanner(System.in);
        System.out.println("=====運算開始=====");
        System.out.print("請輸入第一個整數:");
        int one = input.nextInt();
        System.out.print("請輸入第二個整數:");
        int two = input.nextInt();
        System.out.println("one和two的商為:"+ (one/two));
        System.out.println("=====運算結束=====");
    }
}

若此時將0或字母作為除數,程序必然會報錯。

為瞭處理這種錯誤的發生,可以引入try-catch來避免程序報錯而終止運行。

在可能出現異常的位置引入try-catch結構,當程序某一句發生錯誤,就會輸出catch中自己設置的報錯內容(程序出現錯誤!),其中 e.printStackTrace();語句會打印出錯的詳情信息,在終端打印的位置隨機,若沒有該語句,就隻會輸出自己設置的報錯內容,程序正常運行。:

try{
    System.out.print("請輸入第一個整數:");
    int one = input.nextInt();
    System.out.print("請輸入第二個整數:");
    int two = input.nextInt();
    System.out.println("one和two的商為:"+ (one/two));
}catch(Exception e){
    System.out.println("程序出現錯誤!");
    e.printStackTrace();   //打印出錯的詳情信息,在終端打印的位置隨機
}

輸出:

1.輸入兩個整數

=====運算開始=====
請輸入第一個整數:15
請輸入第二個整數:5
one和two的商為:3
=====運算結束=====

2.將字母a作為除數輸入

=====運算開始=====
請輸入第一個整數:15
請輸入第二個整數:s
程序出現錯誤!
java.util.InputMismatchException
        at java.base/java.util.Scanner.throwFor(Scanner.java:939)
        at java.base/java.util.Scanner.next(Scanner.java:1594)
        at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
        at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
        at java_exception.TryDemoOne.main(TryDemoOne.java:21)
=====運算結束=====

3.將0作為除數輸入

=====運算開始=====
請輸入第一個整數:15
請輸入第二個整數:0
程序出現錯誤!
java.lang.ArithmeticException: / by zero
        at java_exception.TryDemoOne.main(TryDemoOne.java:22)
=====運算結束=====

如果要保證在catch包含的語句之後的結果正常輸出,可以加上finally:

try{
    System.out.print("請輸入第一個整數:");
    int one = input.nextInt();
    System.out.print("請輸入第二個整數:");
    int two = input.nextInt();
    System.out.println("one和two的商為:"+ (one/two));
}catch(Exception e){
    System.out.println("程序出現錯誤!");
    e.printStackTrace();   //打印出錯的詳情信息,在終端打印的位置隨機
}finally{
    System.out.println("=====運算結束=====");
}

以上就是try-catch-finally的完整組合瞭,try負責拋出異常,catch負責捕獲異常,finally負責無論怎樣都會執行。

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: