示例#1:
try { fileChooser.setSelectedFile(new File(filename)); }
catch (NullPointerException e) { /* do nothing */ }
示例#2:
if (filename != null)
fileChooser.setSelectedFile(new File(filename));
#1 是出于性能或稳定性(或任何其他原因)本身就不好,还是只是有点不同?这不是一个很好的例子,因为 #1 与 #2 相比没有优势,但在不同的情况下可能会有优势(例如提高可读性、减少代码行等)。
编辑: 共识似乎是#1 是一个禁忌。最常见的原因:开销
另外,@Raph Levien 有很好的洞察力:
避免#1 的一个原因是它会损害您使用异常断点的能力。正常运行的代码永远不会故意触发空指针异常。因此,将调试器设置为在每次发生时停止是有意义的。在#1 的情况下,您可能会经常遇到此类异常。除了其他充分的理由外,还有潜在的性能影响。
此外,See Link更深入。
最佳答案
#2 无疑是更好的选择。异常处理不应用作程序控制流中的结构。应该使用异常来处理不受程序员控制的情况。在此示例中,您可以检查 fileChooser 是否为 null,以便它在您的控制之下。
关于java - 避免使用 try-catch 语句的充分理由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5440107/