问题是这样的一个项目中,如果出现异常,就在数据库中记录该异常出现的时间和信息
别人提供了我2种方法
1.继承Exception类,之后可能出现异常的地方都抛出我这个继承了Exception的类
2.写一静态方法,每个出现异常的地方都进行捕捉,之后再捕捉到的时候调用我的方法进行数据库操作
明显第一种比第二种好,但是我知道继承Exception后就不知道怎么写下去了请大家指教一下,谢谢!
别人提供了我2种方法
1.继承Exception类,之后可能出现异常的地方都抛出我这个继承了Exception的类
2.写一静态方法,每个出现异常的地方都进行捕捉,之后再捕捉到的时候调用我的方法进行数据库操作
明显第一种比第二种好,但是我知道继承Exception后就不知道怎么写下去了请大家指教一下,谢谢!
而在catc里面 调用一个方法
该方法内容如下:
将异常信息 用参数的方式传递给方法 方法将负责将以一些异常信息 插入数据库
方法里面封装捕获到的异常
在写一个方法,用来向数据库中插入异常信息
public void function() throws AutoException
{
throw new NullPointerException() ;
}
它抛出了一个NullPointerException,虽然我抛出了一个AutoException,但是因为
NullPointerException的父类是Exception而不是AutoException,所以就算AutoException
覆写任何Exception的方法都无效,因为AutoException根本不是NullPointerException的父类
所以根本不会触发到任何方法.
换句话说,一个方法中如果没有抛出和捕捉异常,但是此方法出现了一些异常,是无法捕获的,无法对未知异常进行处理,除非可以改变Exception
建议:
try{
//Exceptionable code.
} catch(Exception ex){
//你应该知道这里是什么异常吧?
Util.saveExceptionIntoDB(ex.getMessage(), new Date()); //将异常信息和时间通过工具类保存到数据库中
//如果还想继续往上抛,可以继续,但是不清楚楼为什么你还要throws
throw new SelfDefineException();
}
现在的任务就是捕获所有异常
我也是听说,一个项目中可以捕获,连服务器负载过高都可以捕获.
这样也不现实吧,那你岂不是每个方法都要throws?
应该对可能产生异常的地方进行异常捕获,1+1的地方根本没必要care. 至于你说的服务器负载过高,也可以捕获.不是很明白,这也是异常?如果不是那怎么抛出来的?我倒是碰到过一次,程序总是运行出错.catch Exception根本捕获不到,最后catch throwable捕获到了,是内存溢出.这个也只能证明,outOfMemory也是一个异常对象.但负载过高也有异常对象对应吗?