如果创建连接失败,我该怎么办?

时间:2015-11-14 07:14:38

标签: java exception runtime-error

我正在使用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终止。

1 个答案:

答案 0 :(得分:2)

由您和您的应用程序设计将JMSException报告为已选中的ExceptionRuntimeException

通常,如果要在应用程序中公开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);
    }
}