创建连接失败怎么办?
What should I do if the creting a connection failed?
我正在使用 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
终止。
将 JMSException 报告为已检查 Exception
或 RuntimeException
取决于您和您的应用程序设计。
一般来说,如果您想在应用程序中公开一个 API 以采取替代操作,则可以在不处理 JMSException
的情况下抛出 CheckedException 或通过处理并用 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);
}
}
我正在使用 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
终止。
将 JMSException 报告为已检查 Exception
或 RuntimeException
取决于您和您的应用程序设计。
一般来说,如果您想在应用程序中公开一个 API 以采取替代操作,则可以在不处理 JMSException
的情况下抛出 CheckedException 或通过处理并用 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);
}
}