2007年7月22日 星期日

Java 學習筆記 (4) - Exception

若是 Exception 在 RuntimeException 的 child class 中有引發的可能,而由於這些 Exception 是可以預期的,因此必須在程式中明確指定處理的方式,才能編譯成功,所以稱為 Checked Exception。

例如使用到 BufferedReader class 中的 readLine() method 時,便有可能引發 IOException 這個 Checked Exception,因此要在程式中明確指定處理,有兩種方式:

在程式中以 try catch 指定要捕捉的例外
import java.io.*;

public class CheckedExceptionDemo {
public static void main(String[] args) {
try {
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
System.out.print("請輸入整數:");
int intput = Integer.parseInt(buf.readLine());
System.out.println("input x 10 = " + (intput * 10));
}
catch(IOException e) { //使用 try catch 結構捕捉 checked exception
System.out.println("I/O 錯誤");
}
}
}
聲明丟出例外,由呼叫者負責處理(此處指的呼叫者是JVM)
import java.io.*;

public class CheckedExceptionDemo2 {
//聲明丟出例外,由呼叫者負責處理(此處指的呼叫者是JVM)
public static void main(String[] args) throws IOException {
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
System.out.print("請輸入整數:");
int intput = Integer.parseInt(buf.readLine());
System.out.println("input x 10 = " + (intput * 10));
}
}

此外,有別於 Checked Exception,Runtime Exception 則是屬於 Unchecked Exception,因此程式設計師是否要在程式中指定這些 Exception 的處理方式,可由程式設計師自行決定,即使程式中沒處理 Runtime Exception,compiler 並不會產生錯誤。


推薦連結

沒有留言:

張貼留言