Java 程式設計()  第 十章 例外處理  上一頁    下一頁

 

10-2 擲出 throw 例外功能

內容:

  • 10-2-1 利用 throw 擲出例外

  • 10-2-2 範例研討:除以零

  • 10-2-3 範例研討:自行拋出例外

10-2-1 利用 throw 擲出例外

程式執行當中,也可以拋出例外物件。但拋出的例外物件必須繼承 Throwable 類別或其衍生類別,Error exception 類別就是。語法如下:

throw new 例外物件();

10-2-2 範例研討:除以零

A)程式範例:Ex10_2.java

Java 內定中,如遇到除以零的現象,會告知產生無窮大的結果,不會產生例外現象,我們可以自行測試,讓他拋出 ArithmeticException 例外物件,程式範例如下:

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

//Ex10_2.java

import java.util.*;

public class Ex10_2 {

    public static void main(String args[]) {

        Scanner keyin = new Scanner(System.in);

        double  a;  //分數;

        double  b; // 分子

                double  c; // 分母

                try {

                        System.out.printf("請輸入除數的分子 =>");

                        b = keyin.nextDouble();

                        System.out.printf("請輸入除數的分母 =>");

                        c = keyin.nextDouble();

                        if (c == 0)

                                throw new ArithmeticException();

                        a = b / c;

                        System.out.printf("\n");

                        System.out.printf("%.2f/%.2f = %.2f\n", b,c,a);

                }

        catch(InputMismatchException except1){

                        System.out.printf("Catch NumberFormatException\n");

                        System.out.printf("%s\n", except1.toString());

          }

         catch(ArithmeticException except2){

                        System.out.printf("Throw out Catch ArithmeticException\n");

                        System.out.printf("%s\n", except2.toString());

         }

     }

}

B)執行結果:

D:\Java2_book\chap10>java Ex10_2

請輸入除數的分子 =>5

請輸入除數的分母 =>0

Throw out Catch ArithmeticException

java.lang.ArithmeticException

10-2-3 範例研討:自行拋出例外

A)程式範例:Ex10_3.java

如果對於輸入或運算結果並非期望值,也可利用 throw 拋出例外物件。下列程式期望輸入偶數,但輸入奇數時,讓他拋出例外事件,或輸入結果不正確,也拋出。範例如下:

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

//Ex10_3.java

import java.util.*;

public class Ex10_3 {

    public static void main(String args[]) {

        Scanner keyin = new Scanner(System.in);

        int k;

                try {

                        System.out.printf("請輸入除數的分子 =>");

                        k = keyin.nextInt();

                        if (k <10 || k>20)

                                throw new ArithmeticException();

                        int x=20, y=2, m;

                        System.out.printf("請輸入 %d/%d =>", x, y);

                        m = keyin.nextInt();

                        if (m != x/y)

                                throw new Exception();

                }

        catch(ArithmeticException except1){

                        System.out.printf("Catch NumberFormatException\n");

                        System.out.printf("%s\n", except1.toString());

                        System.out.printf("輸入並非介於 10 20 之間\n");

                }

                catch(Exception except2){

                        System.out.printf("Catch Exception\n");

                        System.out.printf("%s\n", except2.toString());

                }

     }

}

B)執行結果:

D:\Java2_book\chap10>java Ex10_3  [正常輸入]

請輸入除數的分子 =>20

請輸入 20/2 =>10

 

D:\Java2_book\chap10>java Ex10_3  [輸入範圍不對拋出 NumberFormatException]

請輸入除數的分子 =>4

Catch NumberFormatException

java.lang.ArithmeticException

輸入並非介於 10 20 之間

 

D:\Java2_book\chap10>java Ex10_3    [輸入答案不對拋出 Exception]

請輸入除數的分子 =>20

請輸入 20/2 =>3

Catch Exception

java.lang.Exception

 

翻轉工作室:粘添壽

 

Java 程式設計(二) 含物件導向

 

 

翻轉電子書系列: