我有一个写得不好的代码,像这样:
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指针异常。
在这种情况下,您只能中断后续的空指针异常,意识到原因是变量中的空值,然后使用代码中的断点返回并再次进行调试,以查看该空值的来源。