Throwable 類是所有異常類的父類
RuntimeException 繼承自 Throwable
在 JDK 文檔裡面
中文意思如下:
之前,寫代碼的時候 throw 某個異常,
發現有些異常就是不需要 throws 語句(在方法聲明後面),而有些必須加上 throws 語句在方法聲明後面),
或者 try..catch(在方法體裡面)。
具體可以參見文章:http://bbs.csdn.net/topics/390279427
看一個小例子
接收控制台輸入的 兩個 int 類型數,然後將兩者相除。
package it.mark;import java.util.Scanner;public class OnExceptionDemo {public static void main(String[] args) {usingDivisionCalcu();}/** * 使用除法計算機計算數值. */private static void usingDivisionCalcu() {int[] input = new int[2];// 建立 Scanner 對象Scanner scan = new Scanner(System.in);// 等待使用者輸入while (scan.hasNextInt()) {for (int i = 0; i < 2; i++) {input[i] = scan.nextInt();}break;}// 從使用者輸入資料中,擷取被除數和除數int dividend = input[0];int divisor = input[1];calc4division(dividend, divisor);}/** * 除法計算. * * @param dividend * 被除數 * @param divisor * 除數 */private static void calc4division(int dividend, int divisor) {int result = 0;result = dividend / divisor;System.out.println("計算結果是: " + result);}}
很明顯,除數為 0 是錯誤的。
修改一下 calc4division 方法
/** * 除法計算. * * @param dividend * 被除數 * @param divisor * 除數 */private static void calc4division(int dividend, int divisor) {int result = 0;if (divisor == 0) {throw new ArithmeticException("除數是0,不符合人類計算規則!");}result = dividend / divisor;System.out.println("計算結果是: " + result);}
這裡可以看出,在方法 calc4division 裡面 throw ArithmeticException 異常,
但是編譯器並沒有要求我 throws 或者 try...catch
如果你換成 Exception 或者其子類,編譯器就會要求你了。
這裡,我們自己可以去直接捕獲
/** * 除法計算. * * @param dividend * 被除數 * @param divisor * 除數 */private static void calc4division(int dividend, int divisor) {int result = 0;try {result = dividend / divisor;} catch (ArithmeticException ae) {System.out.println("除數是0,不符合人類計算規則!" + ae.getMessage());}System.out.println("計算結果是: " + result);}
最後提醒
如果你的代碼裡面出現關於 throw RuntimeException,那就要根據實際情況去處理了。
是捕獲還是讓他運行時報錯,由您決定!
更多關於 try catch
可以 go --->
http://blog.csdn.net/androidbluetooth/article/details/7868521