private boolean isLastCtfNeedReturn(SwCmpContract swCmpContract) {
Set<SwCmpProc> swCmpProcs = swCmpContract.getSwCmpProcs();
int qtyCtfNeedReturn = 0;
for (SwCmpProc swCmpProc : swCmpProcs) {
if (swCmpProc.getReturnStatus().equals(Constants.RETURNED_FLAG)) {
qtyCtfNeedReturn = qtyCtfNeedReturn + 1;
}
}
return qtyCtfNeedReturn == 1;
}
以上方法在调试时在进去if语句时,最终的qtyCtfNeedReturn的值却是0,我在if语句体中添加输出语句后,调试时,也会走到该行,但最终没有在控制台输出任何内容;由此判断语句根本没有执行。最后在if语句设断点,断点查看if条件值为false。
这是第一次遇到IDEA IDE调试的问题,困扰了1个小时左右,最终发现是IDE的问题。
仅此记录,当出现问题时,不要太相信IDE,当它出现问题时,很可能会影响你对错误的判断。


本文记录了一次使用IDE进行调试时遇到的奇怪现象:在一个看似正常的if语句中,条件始终为false,导致预期的代码路径未被执行。通过仔细检查发现,问题并非出自代码本身,而是由于IDE的显示错误。
464

被折叠的 条评论
为什么被折叠?



