我正在使用JMS处理Web应用程序,目前我有一个带有以下初始化方法的bean:
@PostConstruct
public void init(){
try {
connection.start();
connection = connectionFactory.createConnection();
} catch (JMSException e) {
throw new RuntimeException(e); // <---------- Here
}
}
JMSException是一个经过检查的异常。因为,如果无法启动连接,我的应用程序无法恢复,我抛出RuntimeException
。但我不确定。也许我应该抛出一些Error
来强制JVM
终止。
答案 0 :(得分:2)
由您和您的应用程序设计将JMSException报告为已选中的Exception
或RuntimeException
。
通常,如果要在应用程序中公开API以采取替代操作,则抛出CheckedException,而不处理JMSException
或使用CustomException
处理和包装它。
正如您所说,如果您在这种情况下没有替代选项并且期望应用程序退出,您可以抛出RuntimeException
。但我更喜欢定义一个更有意义的RuntimeException扩展,如下面给出的ConnectionFailedException
。
public class ConnectionFailedException extends RuntimeException {
private static final long serialVersionUID = -7168847000818691293L;
public ConnectionFailedException(Throwable cause) {
super(cause);
}
public ConnectionFailedException(String message, Throwable cause) {
super(message, cause);
}
}