java - 为什么 `exception` 在任何地方都看不到?

标签 java exception null nullpointerexception

我有一段写得不好的代码,就像这样:

HashMap<String, TceFile> mapPresetLastKdf = new HashMap<String, TceFile>( (HashMap<String, TceFile>) RsessionVars.get( sessionVars, Constants.SVAR_ENC_PRESET_LAST_KDF_MAP ) );   
HashMap<String, String>  mapPresetApid    = new HashMap<String, String >( (HashMap<String, String >) RsessionVars.get( sessionVars, Constants.SVAR_ENC_PRESET_APID_MAP     ) );

显然,如果 RsessionVars.get 返回 null,第一行就会失败。在这种情况下,第二行永远不会被执行。

但是,Eclips IDE 不会向我发出此故障信号,它会继续执行,因为一切正常。

恐怕代码中有很多地方都像这样。我怎样才能检测到这些?

如何强制 Eclipse 停止并报告类似这样的错误?

编辑:
这似乎是异常处理的问题。

HashMap<String, TceFile> mymap = new HashMap<String, TceFile>( null ); 

这应该报告null指针异常。
为什么这个异常在任何地方都看不到?

最佳答案

可以捕获的异常与根本无法捕获的异常的逻辑原因之间是有区别的。在这种情况下,返回并随后设置 null 值是有效的做法。很可能在后续语句中,您尝试向某个方法发送此变量(因此为空),并且您收到空指针异常。

在这种情况下,您只能在后续的空指针异常上中断,意识到原因是变量中的空值,然后返回并使用代码中的断点再次调试以查看该空值在哪里来自。

关于java - 为什么 `exception` 在任何地方都看不到?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16589760/

相关文章:

java - 如何迭代一个类的方法,然后迭代返回的对象并调用另一个方法?

java - (Java) 如何定义允许用户输入哪些字母/数字/符号?

c - 语句 "Rust won' t convert integers to references"是什么意思?

mysql - 定义空值意味着全局?

java - 程序打印 1-100 素数并对给定范围内的合数抛出异常

java - new type[0] 和 null 之间的区别 - java

java - Android 处理程序中的内存泄漏

java - 在 JTextPane 中突出显示当前行

java - 如何使用 JDBC 查询 UTF-8 数据库

java - 为什么 Java 不允许 Throwable 的泛型子类?