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

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)发送某种方法,并且会收到null指针异常。

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

10-05 19:47
查看更多