尝试捕获:这是可接受的做法吗?

尝试捕获:这是可接受的做法吗?,第1张

尝试捕获:这是可接受的做法吗?

这确实是可怕的做法。特别是捕捉

Exception
到的东西而不是特定的东西会散发出可怕的气味-
甚至
NullPointerException
会被吞下。即使可以确定抛出的特定异常没有实际后果,也应始终至少记录下该异常:

try {    // pre}catch (MyInconsequentialException mie) {   // tune level for this logger in logging config file if this is too spammy   MY_LOGGER.warning("Caught an inconsequential exception.", mie);}

但是,在这种情况下例外不可能完全没有意义。我建议确切研究应用程序代码打算在这里吞下哪些异常,以及它们对于执行的真正含义。

一个重要的区别是是否使用try / catches吞下了已检查的异常。如果是这种情况,则可能表明程序员方面极度冷漠-
有人只是想编译他/她的代码。至少应修改代码:

try {   // pre}catch (SpecificCheckedException sce) {   // make sure there is exception logging done farther up   throw new RuntimeException(sce);}

这将抛出包装在unchecked中的异常

RuntimeException
,有效地允许代码进行编译。但是,即使这也可以被认为是一个简单的创举-
检查异常的最佳实践是在当前方法中或通过添加
throws SpecificCheckedException
方法签名来单独处理它们。

就像@Tom Hawtin提到的那样,

new Error(sce)
可以使用它来代替,
newRuntimeException(sce)
以避开
Exception
更进一步的捕获,这对于不希望被抛出的东西是有意义的。

如果不使用try / catch吞下已检查的异常,则同样危险,应将其删除。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5586938.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存