java:重新触发捕获的异常
我想捕获一个SQLException,发送一些邮件,然后将异常发送到下一个目标。我的子类如下:java:重新触发捕获的异常,java,exception-handling,Java,Exception Handling,我想捕获一个SQLException,发送一些邮件,然后将异常发送到下一个目标。我的子类如下: class myexception extends SQLException { public myexception( Throwable cause ) throws SQLException { super( cause ); ... send mail ... throw new SQLException( cause );
class myexception extends SQLException {
public myexception( Throwable cause ) throws SQLException {
super( cause );
... send mail ...
throw new SQLException( cause );
}
}
如果我包装了一个抛出SQLException('connect()'或类似内容)的现有函数:
我可以重新显示原始SQLException吗,还是需要将其解压缩并创建一个新的SQLException?IE是我的类在调用throw new SQLException(原因)时将生成运行时错误 我不明白为什么不可能,但您需要捕获SQLException:
try{
try{
someCall();
}
catch(myException e) {
}
}
catch(SQLException e) {
// catches the thrown SQLException
//created by new myException(Throwable clause)
}
我不明白为什么不可能,但您需要捕获SQLException:
try{
try{
someCall();
}
catch(myException e) {
}
}
catch(SQLException e) {
// catches the thrown SQLException
//created by new myException(Throwable clause)
}
在我看来,不应该使用异常来实现业务或框架逻辑(例如“创建时发送电子邮件”) 应该使用实际的框架本身来实现这一点 例如,如果您在控制反转(Inversion of Control,IoC)容器(如spring)中管理所有软件组件,并且每次抛出特定异常时都希望执行“操作”(如发送电子邮件),则可以使用面向方面的编程技术 使用这种声明性构造,您可以针对某些方法,拦截抛出SQLException的情况,然后执行逻辑
在发送电子邮件的情况下,我会亲自创建一个队列或其他东西,以便在发送电子邮件时不会中断主代码的执行在我看来,不应使用异常来实现业务或框架逻辑(例如“创建时发送电子邮件”) 应该使用实际的框架本身来实现这一点 例如,如果您在控制反转(Inversion of Control,IoC)容器(如spring)中管理所有软件组件,并且每次抛出特定异常时都希望执行“操作”(如发送电子邮件),则可以使用面向方面的编程技术 使用这种声明性构造,您可以针对某些方法,拦截抛出SQLException的情况,然后执行逻辑
在发送电子邮件的情况下,我会亲自创建一个队列或其他东西,以便在发送电子邮件时不会中断主代码的执行
try {
sqlCall();
} catch (SQLExcetion e) {
sendMail();
throw e;
}
您不需要子类化
SQLException
有一种更简洁的方法来完成您正在尝试的任务
try {
sqlCall();
} catch (SQLExcetion e) {
sendMail();
throw e;
}
您不需要子类化
SQLException
非常好的一点。事后看来,这一切都更安全。(取出橡皮擦)-开始(反)编码的时间到了。非常好。事后看来,这一切都更安全。(取出橡皮擦)-开始(反)编码的时间。