栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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吞下已检查的异常,则同样危险,应将其删除。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/595747.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号