qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Java自定義異常

           Java異常機制可以保證程序更安全和更健壯。雖說Java類庫已經提供很多可以直接處理異常的類,但是有時候為了更加精準地捕獲和處理異常以呈現更好的用戶體驗,需要開發者自定義異常。本文就是探討如何自定義異常以及使用自定義的異常。

            在進行程序開發的過程中,自定義異常遵循以下四個步驟:

            1)首先創建自定義異常類,語法格式:自定義異常類名 extends Exception。

            2)在方法中通過關鍵字throw拋出異常對象。

            3)若是在當前拋出異常的方法中處理異常,可以用try-catch語句捕獲并處理;若不是,在方法的聲明處通過關鍵字throws指明要拋出給方法調用的異常。

            4)在出現異常方法的調用中捕獲并處理異常。

            接下來,通過一個簡單的程序來說明自定義異常和使用自定義異常。

            首先創建自定義異常類,代碼如下:

          /**
           *<p>Titlt:自定義異常類NumeratorIsZeroException</p>
           *<p>Description:分子為零的異常</p>
           *<p>Copyright:copyright(c) 2012</p>
           *<p>Filename:NumeratorIsZeroException.java</p>
           *@authorWang Luqing
           *@version1.0
           */
          class NumeratorIsZeroException extends Exception
          {
           public NumeratorIsZeroException(String msg)
           {
            super(msg);
           }
          }

            接下來,使用自定義異常類,代碼如下:

          /**
           *<p>Titlt:設計類Number/p>
           *<p>Description:類中有除法計算方法</p>
           *<p>Copyright:copyright(c) 2012</p>
           *<p>Filename:Number.java</p>
           *@authorWang Luqing
           *@version1.0
           */
          public class Number
          {
           public int divition(int iNum1,int iNum2)    throws NumeratorIsZeroException
           {
            if(0 == iNum2)
            {
             throw new NumeratorIsZeroException("分子不能為零。");
            }
           
            return (iNum1/iNum2);
           }
          }
          /**
           *<p>Titlt:設計類Test</p>
           *<p>Description:測試自定義的異常類</p>
           *<p>Copyright:copyright(c) 2012</p>
           *<p>Filename:Test.java</p>
           *@authorWang Luqing
           *@version1.0
           */
          public class Test
          {
           public static void main(String[] args)
           {
            Number num = new Number();
           
            try
            {
             System.out.println("商:" + num.divition(12,0));
            }
            catch(NumeratorIsZeroException e)
            {
             System.out.println(e.getMessage());
             e.printStackTrace();
            }
            catch(Exception e)
            {
             System.out.println(e.getMessage());
             e.printStackTrace();
            }
           }
          }

            運行結果如下所示:

            分子不能為零。

            NumeratorIsZeroException:分子不能為零。

            at Number.divition(Number.java:15)

            at Test.main(Test.java:17)

            總結:

            1)根據上述代碼關鍵點歸納,自定義異常類,標識可能拋出的異常,捕獲和處理異常。

            2)getMessage():輸出異常的信息;printStackTrace():輸出導致異常的詳細信息。

            3)設計和利用好自定義異常,使得異常的處理更靈活和精準。

          posted on 2012-09-14 09:42 順其自然EVO 閱讀(8331) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2012年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 胶南市| 商洛市| 边坝县| 龙门县| 绥宁县| 肥城市| 布拖县| 涟水县| 灵武市| 常熟市| 宁陵县| 玉溪市| 锡林浩特市| 威信县| 吉安市| 井冈山市| 桐城市| 疏勒县| 鲜城| 绥芬河市| 庆阳市| 柯坪县| 康平县| 将乐县| 临安市| 光泽县| 额济纳旗| 锡林郭勒盟| 伊吾县| 纳雍县| 手游| 柳江县| 呼和浩特市| 西贡区| 吉水县| 栾川县| 石河子市| 吉林市| 浑源县| 濮阳县| 西平县|