1. try的程式區塊:
放的是一般執行的程式。但在此區塊內的程式一有任何例外發生且符合catch所指定捕捉的例外類別,就會跳到catch的區塊內執行,否則就會跳到catch區塊之後的程式繼續執行°
2. catch的程式區塊:
當try區塊在執行時發生例外,便會跳到catch區塊檢査是否有符合補捉的例外類別,如果有,就會執行catch區塊內的程式-此時可以透過該例外物件取得相關的例外資訊。程式執行完畢後,會跳到區塊之後的程式繼續執行。
3. finally的程式區塊:
無論執行正常或發生例外而執行catch區塊內的程式,之後都一定會執行finally區塊內的程式。因此如果有需要收尾的善後工作就可以放在此一區塊內。
------------------------------------------------範例程式-1------------------------------------------------
import java.util.*;
public class DivException{
public static void main(String[] args){
try{
Scanner scanner = new Scanner(System.in);
System.out.print(" 請輸入分子數:");
int a = scanner.nextInt();
System.out.print(" 請輸入分母數:");
int b = scanner.nextInt();
System.out.println(a+" 除以"+b+" 等於:"+a/b);
}
catch (ArithmeticException e){ // 運算式產生的例外,例如 除數為0
System.out.println(" 除數不能為0");
}
catch (InputMismatchException e){
System.out.println(" 輸入的數值必須為數值");
}
}
}
------------------------------------------------執行結果------------------------------------------------
E:\test>java DivException
請輸入分子數:3
請輸入分母數:4
3 除以4 等於:0
------------------------------------------------範例程式-2-----------------------------------------------
import java.util.*;
public class DivException2{
public static void main(String[] args){
try{
Scanner scanner = new Scanner(System.in);
System.out.print(" 請輸入分子數:");
int a = scanner.nextInt();
System.out.print(" 請輸入分母數:");
int b = scanner.nextInt();
System.out.println(a+" 除以"+b+" 等於:"+a/b);
}catch (Exception e){
System.out.println(" 執行發生例外");
}
}
}
------------------------------------------------執行結果------------------------------------------------
E:\test>java DivException2
請輸入分子數:5
請輸入分母數:0
執行發生例外
------------------------------------------------範例程式-3-----------------------------------------------
public class ExceptionMsg{
public static void main(String args[]){
try{
int a[]=new int[args.length-1];
for(int i=0; i
a[i]=Integer.parseInt(args[i]);
}catch(Exception e){
System.out.println(" 例外原因:"+e.getCause());
System.out.println(" 例外局部描述:"+e.getLocalizedMessage());
System.out.println(" 例外訊息:"+e.getMessage());
System.out.println(" 例外類型:"+e.toString());
}finally{
System.out.println("== 程式結束==");
}
}
}
------------------------------------------------執行結果------------------------------------------------
E:\test>java ExceptionMsg 1 2 3 KK
例外原因:null
例外局部描述:For input string: "KK"
例外訊息:For input string: "KK"
例外類型:java.lang.NumberFormatException: For input string: "KK"
== 程式結束==
沒有留言:
張貼留言