Java異常捕捉機制
任務要求:
一、完成一個 java application應用程式,完成c=a/b 的計算并輸出c的結果,可以為a和b在程式中賦初值、或者接收使用者通過鍵盤輸入a和b的數值文本後轉換為數字等,在程式要求當 b 為0時c的計算結果正确。
二、完成一個 java application應用程式,完成一個計算絕對值表達式 |a-b|的功能。要求當b比a大時人為抛出一個自定義異常,在計算絕對值時通過異常捕捉機制完成此絕對值表達式的計算。
任務一代碼:
import java.util.Scanner;//導入掃描器
public class yichangchuli { //類名
public static void main(String[] args){//main函數
int a=0, b=0, c=0; //定義變量a,b,c用于存放資料
while(true){ //循環體,用于多次輸入輸出
System.out.println("請輸入a,b:");//輸出文字提示
Scanner s1 = new Scanner(System.in);//建立掃描器對象用于接收鍵盤輸入的數字
a = s1.nextInt(); //将接收到的值賦予a變量
Scanner s2 = new Scanner(System.in);
b = s2.nextInt();
try{ //try catch異常捕捉語句
System.out.println(c=a/b); //這裡放置可能存在異常的語句
}
catch(ArithmeticException e){ //異常的類型以及異常對象
System.out.println("除數不能為零,請重新輸入:");//對出現異常時經行的處理語句
}
}
}
}
運作結果:
任務二:
這裡需要用到自定義異常的處理方式,先介紹一下throws和throw的差別以及用法:
throws
- 用在方法聲明後面,然後跟異常類名
- 表示抛出異常,由該方法的調用者來處理
- 表示出現異常的一種可能性,并不一定會出現這些異常
throw
- 用在方法體内,後面跟的是異常對象名
- 表示抛出異常,由方法體内的語句進行處理
- 執行throw一定抛出了某種異常
代碼:
自定義異常類:
package customize;//包名
public class MyException extends Exception {//自定義異常類
public MyException() { //構造方法
}
public MyException(String message) { //有參構造方法
super(message); //super傳遞參數
}
}
異常處理類:
package customize;//包名
public class yichang {//yichang類
public void check(int c) throws MyException{//check方法體
if(c<0) {
throw new MyException("|a-b|="+(-c));//if語句判斷是否抛出異常
}else {
System.out.println("|a-b|="+c);//輸出語句
}
}
}
main函數:
package customize;//包名
import java.util.Scanner;//導入掃描器
public class customize {//類名
public static void main(String[] args) {//main函數體
Scanner sc = new Scanner(System.in);//建立掃描器對象
System.out.println("請輸入a,b的值"); //輸出提示文字
int a = sc.nextInt(); //接收鍵盤輸入的數字
int b = sc.nextInt(); //接收鍵盤輸入的數字
int c = a-b; //定義c的計算公式
yichang t = new yichang(); //建立yichang類的對象
try { //異常捕捉
t.check(c); //調用check異常處理方法
} catch (MyException e) { //
System.out.print(e); //輸出異常結果
}
}
}