如鵬網 大學生計算機學習社區

          CowNew開源團隊

          http://www.cownew.com 郵件請聯系 about521 at 163.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            363 隨筆 :: 2 文章 :: 808 評論 :: 0 Trackbacks
          作者楊中科是CowNew開源團隊JDBMonitor項目組的開發人員。
          CowNew開源團隊網站 http://www.cownew.com
          論壇 http://www.cownew.com/newpeng/
          轉載請注明此版權信息

          ? 有一定開發經驗的朋友在處理異常的時候都不會直接寫個e.printstacktrace()來“捕獲”異常,但是在有些情況下是“無法拋出”異常的,比如一些重載基類的一些方法,但是這些方法是沒有聲明異常拋出的,或者在類的static初始化塊的時候也是“無法拋出”異常的。其實“無法拋出異常”的地方還是能拋出運行時異常的。
          最好用的數據庫監控、日志工具JDBMonitor就是通過這種方式解決此問題的。JDBMonitor的二進制jar包和源代碼都可以從 http://www.cownew.com 下載得到。
          JDBMonitor在CommonUtils總定義了一個toRuntimeException方法,用來把異常轉換成運行時異常:
          public static RuntimeException toRuntimeException(Throwable e)
          {
          ?RuntimeException re = new RuntimeException(e);
          ?re.setStackTrace(e.getStackTrace());
          ?return re;
          }
          讓我們首先打開com.cownew.JDBMonitor.jdbc.DBDriver,然后定位到代碼的最后
          static
          {
          ??? try
          ??? {
          ?DriverManager.registerDriver(new DBDriver());
          ??? } catch (Exception e)
          ??? {
          ?throw CommonUtils.toRuntimeException(e);
          ??? }
          }
          這是在類的初始化塊中向DriverManager注冊JDBC驅動,在初始化塊中是不能聲明拋出異常的,因此JDBMonitor將異常轉化為RuntimeException異常拋出。這樣就做到了不放過任何一個異常。

          再打開:
          com.cownew.JDBMonitor.listenerImpl.sckListenerClient.ListenerClient.java中的SocketListener類,其中的run方法是實現的Runnable接口中的方法,而Runnable接口中的Run方法是沒有聲明異常的,因此JDBMonitor也是采用的轉換成RuntimeException的方式進行的異常處理:
          public void run()
          {
          ? try
          ? {
          ?...
          ? } catch (IOException e)
          ? {
          ??? throw CommonUtils.toRuntimeException(e);
          ? } catch (ClassNotFoundException e)
          ? {
          ??? throw CommonUtils.toRuntimeException(e);
          ? }
          }

          posted on 2006-06-02 23:46 CowNew開源團隊 閱讀(814) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 江川县| 昌都县| 恭城| 四子王旗| 涞源县| 万山特区| 遂昌县| 定西市| 星子县| 江永县| 肃南| 武平县| 修水县| 罗山县| 广州市| 阳山县| 南漳县| 建瓯市| 屏南县| 邯郸市| 墨玉县| 筠连县| 辽源市| 出国| 津市市| 辽中县| 潞西市| 潜山县| 禄劝| 莒南县| 河西区| 浮梁县| 疏勒县| 通化市| 金阳县| 卓尼县| 台东县| 盐山县| 许昌县| 汤阴县| 广宁县|