java之異常處理

     * 異常處理的兩種方式:
     *         a: try...catch...finally
     *             try...catch
     *             try...catch...finally
     *             try...finally
     *         b:throws
     * try...catch處理異常的基本格式
     *         try...catch...finally
     *
     * try:用來檢測異常
     * catch:用來捕獲異常
     * finally:釋放資源
     *
     * 若是try後面跟多個catch,那麼小的(子類異常)放到前面,大的放後面
     *
     * Throwable中的幾個常見方法
     *         a: getMessage()
     *             獲取異常信息,返回字符串
     *         b: toString()
     *             獲取異常類名和異常信息,返回字符串
     *         c: printStackTrace()
     *             獲取異常類名和異常信息,以及異常出如今程序中的位置,返回void
     *
     * throw: 在功能方法內部出現某種狀況,程序不能繼續運行,須要進行跳轉是,就用throw把異常對象拋出
     *
     * throw和throws的區別:
     *         a:throws
     *             用在方法聲明後面,跟的是異常類名
     *             能夠跟多個異常類名,用都好隔開
     *             表示拋出異常,由該方法的調用者來處理
     *         b:throw
     *             用在方法體內,跟的是異常對象名
     *             只能拋出一個異常對象名
     *             表示拋出異常,由該方法體內的語句處理
     *
     * finally:
     *         被finally控制的語句必定會被執行(在執行到finally以前JVM退出了,finally就不會再執行,如:System.exit(0))
     *         finally的做用:用於釋放資源,在IO流操做和數據庫操做彙總會見到
     *         當遇到return語句是,會先看下return後面是否有finally語句,若是有會將finally執行以後再結束程序
     *
     * final、finally和finalize的區別:
     *         final:能夠修飾類,不能被繼承
     *            能夠修飾方法,不能被重寫
     *            能夠修飾變量,變量值不能被修改
     *      finally:是try語句中的有一個語句體,不能單獨使用,用來釋放資源
     *      
     *      finalize:是一個方法,當垃圾回收期肯定不存在對該對象的更多引用時,有對象的垃圾回收期調用此方法
     *      
     *若是catch中有return語句,那麼finally會執行嗎?若是執行是在return以前仍是以後?
     *        是在return以後才執行finally語句,此時的return執行只是創建一個返回路徑,不會真正返回;
     *      千萬不要在finally裏面寫return語句,由於finally語句只是用來釋放資源的;
     *      
     *異常的注意事項:
     *    a: 子類重寫父類方法是,子類的方法的方法必須拋出相同的異常或父類異常的子類;
     *    b: 若是父類拋出了多個異常,子類重寫父類是,只能拋出相同的異常或是他的子集,子類不能拋出父類沒有的異常;
     *    c: 若是被重寫的方法沒有異常拋出,那麼子類的方法絕對不能夠拋出異常,若是子類內部有異常發生,那麼子類只能try,不能throws;
     *
     *如何使用異常:
     *  原則:若是該功能內部能夠將問題處理,用try,若是處理不了,交由調用者處理,這樣用throws;
     *  區別:
     *      後續程序須要繼續運行就用try;
     *      後續程序不須要運行就用throws;
     *      
     *   若是JDK沒有提供相應的異常,須要自定義異常進行處理;
     *   
     *try...catch的快捷鍵:選中須要處理的代碼  用  alt + shift + z 數據庫

 

1.  Throwable中的幾個常見方法以下:spa

 1 public static void main(String[] args) {
 2         try {
 3             System.out.println(1/0);
 4         } catch (Exception e) {
 5             // TODO: handle exception
 6             System.out.println(e.getMessage());
 7             System.out.println(e.toString());    //調用toString方法時和直接打印對象e效果同樣
 8             e.printStackTrace();                 //JVM默認就用這種方式處理異常
 9         }
10     }

2.  異常練習之鍵盤輸入整數,對整數進行轉換爲二進制處理code

 1 public class Demo2_Test {
 2 
 3     /*
 4      * 從鍵盤錄入一個整數,將這個整數轉換成二進制顯示
 5      * 對處理過程進行異常處理:可能錄入的是一個過大的整數、小數或者是個字符串
 6      * 
 7      * 分析:
 8      *     對錄入的字符串進行轉換爲BigInteger,若是轉換出錯說明不是整數過大
 9      *     對錄入的字符串今次那個轉換爲BigDecimal,若是轉換出錯說明不是小數
10      *     剩下的狀況就是非法字符的狀況了
11      */
12     public static void main(String[] args) {
13 
14         Scanner sc = new Scanner(System.in);
15         System.out.println("請輸入一個整數:");
16         while (true) {
17             String line = sc.nextLine();
18             try {
19                 Integer i = Integer.parseInt(line);
20                 System.out.println(i.toBinaryString(i));
21                 break;
22             } catch (Exception e) {
23                 try {
24                     new BigInteger(line);
25                     System.out.println("輸入的整數過大,請從新輸入一個整數:");
26                 } catch (Exception e2) {
27                     try {
28                         new BigDecimal(line);
29                         System.out.println("輸入的整數是小數,請從新輸入一個整數:");
30                     } catch (Exception e3) {
31                         System.out.println("輸入的整數是非法字符,請從新輸入一個整數:");
32                     }
33                 }
34             }
35         }
36     }
37 
38 }
相關文章
相關標籤/搜索