缺少 InitialContext 定义时使用哪个 Java 运行时异常
Which Java Runtime Exception to Use When Missing an InitialContext Definition
我正在编写 Java Servlet 应用程序,它需要某些环境变量和 JNDI 定义。这些在 server.xml
文件中定义。无法使用默认值。所以程序需要抛出一个运行时(未经检查的)异常。但是哪一个?如果 java.lang.RuntimeException
的子类 none 合适,我想我们需要创建一个新类型。
你可以使用已经定义的异常,但我通常只实现我自己的,因为当它被抛出时我总能快速识别它。 (它告诉你更多,只是通过你的项目的 class 路径。)
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 中像这样自动生成 classes。 (IDEA,在您创建 class、ALT+ENTER 并从 RuntimeException class 覆盖方法后)
为什么要使用自定义异常。:
- 您可以使用 IDE 的查找实现和其他搜索功能来查找用法
- 在某些框架中,例如在 Spring Boot 中,您可以使用注释修饰异常并快速定义响应文本和 http 错误代码。
- 您可以稍后更改异常的实现。
- 您可以在 IDE 中为您的自定义异常定义异常时自动中断,而如果您对内置异常执行此操作,您的调试器将在意想不到的行中停止。
- 您可以避免无意中捕获其他库的异常。
java.lang.NullPointerException
当应用程序的配置尚未(尚未)完成时,变量可能为空,NullPointerException 似乎是合适的。此异常非常通用,但可以在构造函数中使用特定的详细消息进行自定义。
来自API:
Applications should throw instances of this class to indicate other illegal uses of the null object.
- When accessing or modifying the field of a null object.
throw new NullPointerException("environment variable XX is missing");
我正在编写 Java Servlet 应用程序,它需要某些环境变量和 JNDI 定义。这些在 server.xml
文件中定义。无法使用默认值。所以程序需要抛出一个运行时(未经检查的)异常。但是哪一个?如果 java.lang.RuntimeException
的子类 none 合适,我想我们需要创建一个新类型。
你可以使用已经定义的异常,但我通常只实现我自己的,因为当它被抛出时我总能快速识别它。 (它告诉你更多,只是通过你的项目的 class 路径。)
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 中像这样自动生成 classes。 (IDEA,在您创建 class、ALT+ENTER 并从 RuntimeException class 覆盖方法后)
为什么要使用自定义异常。:
- 您可以使用 IDE 的查找实现和其他搜索功能来查找用法
- 在某些框架中,例如在 Spring Boot 中,您可以使用注释修饰异常并快速定义响应文本和 http 错误代码。
- 您可以稍后更改异常的实现。
- 您可以在 IDE 中为您的自定义异常定义异常时自动中断,而如果您对内置异常执行此操作,您的调试器将在意想不到的行中停止。
- 您可以避免无意中捕获其他库的异常。
java.lang.NullPointerException
当应用程序的配置尚未(尚未)完成时,变量可能为空,NullPointerException 似乎是合适的。此异常非常通用,但可以在构造函数中使用特定的详细消息进行自定义。
来自API:
Applications should throw instances of this class to indicate other illegal uses of the null object.
- When accessing or modifying the field of a null object.
throw new NullPointerException("environment variable XX is missing");