最新文章

LightBlog

2019/10/24

Java例外處理-try-catch-finally


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"
== 程式結束==

沒有留言:

Adbox