通常在编写程序时,我遇到了NullPointerException
,我没想到。我经常花费永远找到究竟是null
的内容,但却发现这对我来说是一个简单的疏忽。
我想知道的是:为什么NullPointerException
不是通用的。
例如:
java.lang.NullPointerException<(Class of object that is null)>
at (Stack trace)
而不是:
java.lang.NullPointerException
at (Stack trace)
对我而言,这将大大减少调试所花费的时间,而且似乎难以实现。
顺便说一句, catch
如何阻止使用通用例外呢?
答案 0 :(得分:2)
来自javadocs:泛型作为增强功能允许类型或方法对各种类型的对象进行操作,同时提供编译时类型安全性。但是在编译时你无法知道对象是否为空。
null类型没有名称,不可能声明null类型的变量或转换为null类型。空引用是null类型表达式的唯一可能值。 null引用始终可以强制转换为任何引用类型。在实践中,程序员可以忽略null类型,只是假装null只是一个可以是任何引用类型的特殊文字
答案 1 :(得分:2)
调试器旨在减少调试时间。
null
没有类型,因此您无法向NPE添加类型。
如果在同一行上有许多表达式可能是null
,那么你试图在一行中做太多(或者你应该使用调试器)
答案 2 :(得分:0)
关键是变量是指向直到运行时才定义的类的指针(通常使用接口定义变量并使用实现进行实例化)。所以,如果你收到一个空指针异常,就意味着......这个指针还没有被初始化,所以...它不可能知道它是哪个类(因为它指向什么都没有)。
答案 3 :(得分:0)
当您的变量为null时,NPE会出现。 =&gt;所以你的变量不是任何类型的。
NPE的目的是告诉你&#34;嘿,男人,你在尝试什么都不做的事情&#34;。 不要告诉你为什么没有。
要告诉为什么会出现错误,要花费太多时间。