CowNew开源团队网站 [url]http://www.cownew.com[/url]
论坛 [url]http://www.cownew.com/newpeng/[/url]
转载请注明此版权信息
最好用的数据库监控、日志工具JDBMonitor就是通过这种方式解决此问题的。JDBMonitor的二进制jar包和源代码都可以从 [url]http://www.cownew.com[/url] 下载得到。
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);
}
}