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

捕获嵌套在另一个异常中的异常

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

捕获嵌套在另一个异常中的异常

没有更优雅的方法来选择性地“捕获”嵌套异常。我想如果您做了很多这样的嵌套异常,就可以将代码重构为通用的实用程序方法。但是它仍然不会优雅或高效。

优雅的解决方案是消除异常嵌套。要么不首先将异常链接起来,要么(有选择地)解开包装并将嵌套的异常重新扔到堆栈的上方。

嵌套异常的原因有3个:

  1. 您已经确定原始异常的详细信息不太可能对应用程序的错误恢复有用……但是您想保留它们以用于诊断。

  2. 您正在实现的API方法不允许特定的已检查异常,但是您的代码 不可避免地 会引发该异常。常见的解决方法是将“检查的异常”“走私”到未检查的异常内。

  3. 您很懒惰,并且将 各种 无关的异常转换为单个异常,以避免在方法签名1中包含大量已检查的异常。

在第一种情况下,如果现在需要区分包装的异常,那么您最初的假设是不正确的。最好的解决方案是更改方法签名,以便您摆脱嵌套。

在第二种情况下,您可能应在控件通过有问题的API方法后立即取消包装异常。

在第三种情况下,您应该重新考虑您的异常处理策略;即正确做2。


1-实际上,由于Java 7中引入了多异常catch语法,因此这样做的半合法原因之一已经消失。

2-请勿将您的API方法更改为

throwsException
。这只会使情况变得更糟。现在,您
Exception
每次调用方法时都必须“处理”或传播。这是癌症…



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

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

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