首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抛出或try-catch

抛出或try-catch
EN

Stack Overflow用户
提问于 2010-07-08 20:01:33
回答 11查看 64.1K关注 0票数 80

在决定是向方法添加throws子句还是使用try-catch时,一般的经验法则是什么

据我所知,throws应该在调用者违反约定(传递的对象)时使用,而try-catch应该在方法内部执行的操作过程中发生异常时使用。这是正确的吗?如果是这样的话,调用方应该做些什么?

附言:通过谷歌搜索过了,所以我想要一个明确的答案。

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2010-07-08 20:06:00

  • 只有在您能够以有意义的方式处理异常时才能捕获它
  • 声明向上抛出异常如果异常由当前方法的使用者处理
  • 抛出异常如果异常是由输入参数引起的(但这些异常通常是未检查的)
票数 62
EN

Stack Overflow用户

发布于 2010-07-08 20:05:18

通常,当一个方法不能在本地处理相关的问题时,它应该向它的调用者抛出一个异常。例如,如果假设该方法从具有给定路径的文件中读取数据,则无法以合理的方式在本地处理IOExceptions。这同样适用于无效输入,并补充说,我个人的选择是抛出一个未经检查的异常,比如本例中的IllegalArgumentException

如果出现以下情况,它应该从被调用的方法中捕获异常:

  • 它是可以在本地处理的东西(例如,尝试将输入字符串转换为数字,如果转换失败,则返回默认值是完全有效的),
  • 或它不应该被抛出(例如,如果异常来自特定于实现的较低层,其实现细节不应该对调用者可见-例如,我不想显示我的DAO使用Hibernate来持久化我的实体,因此我在本地捕获所有HibernateExceptions并将它们转换为我自己的异常类型)。
票数 15
EN

Stack Overflow用户

发布于 2010-07-08 20:15:25

下面是我使用它的方法:

抛出:

  • 您只希望代码在发生错误时停止。
  • 适用于在不满足某些先决条件的情况下容易出错的方法。

捕获Try-

如果您想要向最终用户提供有意义的错误,则可以使用不同的errors.

  • Great使程序的行为有所不同。

我知道很多人总是使用投掷,因为它更干净,但几乎没有那么多的控制力。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3203297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档