如鹏网 大学生计算机学习社区

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开源团队 阅读(811) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: