首先創造一個MyException類,繼承自Exception類
代碼實現如下:
繼承自Exception類,在MyException的方法中調用父類的方法,返回錯誤的提示信息。
1 public class MyException extends Exception { 2 3 public MyException(String message) { 4 super(message); 5 } 6 }
使用該類判斷錄入的字符是否是正整數類型,如果不是,返回相關的錯誤信息;否則根據相關的條件返回成績的評定等級。
使用try catch時,在代碼產生的異常可以被throw語句拋出並被catch語句捕獲。(必須被拋出才能被捕獲)
必須將可能存在異常的代碼放在try代碼塊內,才能捕獲可能拋出的異常。一個try類可以對應一個或者多個catch類,一但拋出的異常被一個catch捕獲,其他就不會執行。
1 import java.util.Scanner; 2 3 public class students { 4 static Scanner sc=null; 5 6 static int check(String c) throws MyException { 7 if(!c.matches("^\\-?[0-9]+$")) { //匹配所有的整數 8 throw new MyException("請輸入整數數字!"); 9 } 10 if((Integer.valueOf(c))>100||(Integer.valueOf(c))<0) { 11 throw new MyException("請輸入0到100之間的整數!"); 12 } 13 14 return Integer.valueOf(c); 15 } 16 17 public static void main(String[] args) { 18 System.out.println("請輸出一個整數:"); 19 String c=null; 20 21 sc=new Scanner(System.in); 22 c=sc.nextLine(); 23 try { 24 int a=check(c); 25 if(a<=100&&a>=90) { 26 System.out.println("優!"); 27 } 28 else if(a>=80&&a<90) { 29 System.out.println("良!"); 30 } 31 else if(a>=70&&a<80){ 32 System.out.println("中!"); 33 } 34 else if(a>=60&&a<70) { 35 System.out.println("及格!"); 36 } 37 else{ 38 System.out.println("不及格!"); 39 } 40 } 41 catch (MyException e) { 42 System.out.println(e); 43 } 44 45 } 46 }
程序截圖如下:
除此,完整的try catch語句還有finally語句,該語句一般都會執行,只在以下幾種方式下不會執行:
1.在finally語句塊中發生異常。
2.在前面的代碼中使用了System.exit(0)語句
3.程序所在的線程死亡
4.關閉cpu
加入finally語句運行如下:
1 import java.util.Scanner; 2 3 public class students { 4 static Scanner sc=null; 5 6 static int check(String c) throws MyException { 7 if(!c.matches("^\\-?[0-9]+$")) { //匹配所有的整數 8 throw new MyException("請輸入整數數字!"); 9 } 10 if((Integer.valueOf(c))>100||(Integer.valueOf(c))<0) { //判斷是否為規定范圍的整數 11 throw new MyException("請輸入0到100之間的整數!"); 12 } 13 14 return Integer.valueOf(c); 15 } 16 17 public static void main(String[] args) { 18 System.out.println("請輸出一個整數:"); 19 String c=null; 20 21 sc=new Scanner(System.in); 22 c=sc.nextLine(); 23 try { 24 int a=check(c); 25 if(a<=100&&a>=90) { 26 System.out.println("優!"); 27 } 28 else if(a>=80&&a<90) { 29 System.out.println("良!"); 30 } 31 else if(a>=70&&a<80){ 32 System.out.println("中!"); 33 } 34 else if(a>=60&&a<70) { 35 System.out.println("及格!"); 36 } 37 else{ 38 System.out.println("不及格!"); 39 } 40 } 41 catch (MyException e) { 42 System.out.println(e); //輸出捕獲的異常信息 43 } 44 finally { 45 System.out.println("檢查異常完成!"); //finally語句塊的執行 46 } 47 } 48 }
執行如下: