代码之家  ›  专栏  ›  技术社区  ›  Mikko Koivunalho

缺少InitialContext定义时要使用的Java运行时异常

  •  0
  • Mikko Koivunalho  · 技术社区  · 6 年前

    我正在编程一个JavaServlet应用程序,它需要特定的环境变量和JNDI定义。这些定义见 server.xml 文件。无法使用默认值。所以程序需要抛出一个运行时(未检查)异常。但是哪一个?如果没有 java.lang.RuntimeException 是合适的,我想我们需要创造一个新的类型。

    2 回复  |  直到 6 年前
        1
  •  1
  •   szab.kel    6 年前

    您可以使用已经定义的异常,但我通常只实现自己的异常,因为当抛出异常时,我总是能够快速识别它。(它告诉了你更多,仅仅通过你的项目的类路径。)

    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的find实现和其他搜索函数来定位用法
    • 在某些框架中,比如在Spring Boot中,可以用注释来修饰异常,并快速定义响应文本和http错误代码。
    • 您可以稍后更改异常的实现。
    • 您可以在IDE中为自定义异常定义“异常时自动中断”,而如果要为内置异常执行此操作,调试器将在意外的行中停止。
    • 您可以避免无意中捕获其他库的异常。
        2
  •  0
  •   bookL German Attanasio    6 年前

    java.lang.NullPointerException

    当应用程序的配置尚未完成时,变量可能为空,这时可以使用NullPointerException。此异常是相当一般的,但可以使用构造函数中的特定详细信息进行自定义。

    从API:

    应用程序应该抛出此类的实例,以指示对空对象的其他非法使用。

    • 访问或修改空对象的字段时。
    throw new NullPointerException("environment variable XX is missing");