代码之家  ›  专栏  ›  技术社区  ›  giri

为什么NullPointerException没有声明为选中的异常

  •  22
  • giri  · 技术社区  · 16 年前

    NullPointerException

    9 回复  |  直到 14 年前
        1
  •  36
  •   Bozho    16 年前

    几乎每个方法都必须声明抛出它。

    public void myMethod(String param) throws NullPointerException {
       //
    }
    

        2
  •  15
  •   Michael Borgwardt    16 年前

    它不是一个选中的异常(除其他外) 因为 这是非常普遍的。它几乎可以发生在任何地方。如果它被检查过,那么几乎 任何地方的每个Java程序中的每个方法 throws NullPointerException .

        3
  •  12
  •   Chris Knight    16 年前

        4
  •  5
  •   Heinzi    16 年前

    检查的异常可能会发生,因为 ,而您的程序对此几乎没有控制权,因此出错(例如。 IOException , SQLException ). 你可以预见到这一点并处理好这个案子。

    A. NullPointerException 如果 如果希望抛出NullPointerException,正确的解决方案是修复错误,而不是处理异常。

        5
  •  3
  •   Yishai    16 年前

    我给出的一句话的答案是,它是编程错误的结果,编程错误异常不是检查异常(IllegalStateException、ClassCastException等)。

    但是,即使你有一个理由来解释为什么它应该是一个选中的异常,基本上对象引用上的每一个操作都可以抛出它,所以它会到处都是,实际上一个非平凡程序中的每一个方法都必须抛出它-那么这有什么意义呢?

        6
  •  2
  •   ring bearer    16 年前

    我自己对检查异常的强制性定义。 Checked异常是API在已知的不希望出现的情况下引发的异常

    NullPointerException s并不表示“已知的不良”情况。相反,它们通常是由于代码中某些未经处理的情况而引发的。也就是说,它们大部分时间都是由于糟糕的编码实践造成的——比如试图获取未正确初始化的列表的大小等等。因此,没有必要让它们成为选中的异常——因为Java中的每个对象在某个时刻都可能为空?!。NullPoitnerException也不应该被捕获。

        7
  •  1
  •   java_mouse    15 年前

    选中的异常仅适用于程序可以恢复的异常。在空对象上调用某些东西是程序员的问题,无法恢复。

        8
  •  0
  •   user324138    16 年前

    当您编写的每个函数都必须声明它时,为什么还要包含它?只是为了让你的生活变得简单。

        9
  •  0
  •   LONGHORN007    11 年前

    如果发生空指针异常,则程序将停止。因此,它是未检查的异常。