我正在编写一个 Java Servlet 应用程序,它需要存在某些环境变量和 JNDI 定义。这些在server.xml
文件中定义。无法使用默认值。所以程序需要抛出一个运行时(未经检查的)异常。但是哪一个?如果没有一个java.lang.RuntimeException
适合的子类,我想我们将需要创建一个新类型。
问问题
929 次
2 回答
2
你可以使用已经定义的异常,但我通常只实现我自己的,因为当它被抛出时我总是可以快速识别它。(它告诉你更多,只是通过你的项目的类路径。)
public class MissingInitialContextException extends RuntimeException {
public MissingInitialContextException() {
}
public MissingInitialContextException(String message) {
super(message);
}
public MissingInitialContextException(String message, Throwable cause) {
super(message, cause);
}
public MissingInitialContextException(Throwable cause) {
super(cause);
}
public MissingInitialContextException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
}
您可以在大多数 IDE 中自动生成这样的类。(想法,创建类后,ALT+ENTER 并覆盖 RuntimeException 类中的方法)
为什么使用自定义异常:
- 您可以使用 IDE 的查找实现和其他搜索功能来定位使用情况
- 在某些框架中,例如在 Spring Boot 中,您可以使用注释来装饰异常并快速定义响应文本和 http 错误代码。
- 您可以稍后更改异常的实现。
- 您可以在您的 IDE 中为您的自定义异常定义自动中断异常,而如果您要为内置异常执行此操作,您的调试器将在意外行中停止。
- 您可以避免无意中捕获其他库的异常。
于 2018-07-30T09:51:37.490 回答
0
java.lang.NullPointerException
当应用程序的配置(尚未)完成时,变量可能为 null,NullPointerException 似乎是合适的。此异常非常通用,但可以使用构造函数中的特定详细消息进行自定义。
从 API:
应用程序应抛出此类的实例以指示空对象的其他非法使用。
- 访问或修改空对象的字段时。
throw new NullPointerException("environment variable XX is missing");
于 2018-07-30T10:39:21.877 回答