首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非异常异常

非异常异常
EN

Stack Overflow用户
提问于 2015-06-10 12:23:40
回答 2查看 144关注 0票数 2

这是一件事吗?

我想抛出我自己的异常,只是为了让它更容易处理。但它们并不例外,因为它很可能会发生,而不是例外情况。诸如如果用户从浏览器选择了错误的文件类型。是的,我可以处理它,但是如果我抛出一个特别对子方法的异常会容易得多,因为我需要以某种方式告诉父方法子方法失败了,所以做一些不同的事情。我认为抛出异常会更容易。

那么在正常情况下抛出异常是可以的吗?

EN

回答 2

Stack Overflow用户

发布于 2015-06-10 12:24:38

我不得不说,这个问题的答案在某种程度上是基于意见的,但普遍的共识似乎是,滥用异常来进行常规的流程控制是一个坏主意。

它是一种well-documented反模式,被认为是这样的主要原因是:

  • it掩盖了你真正的异常,
  • 导致了类似GOTO的意大利面条代码,
  • 违反了the principle of least astonishment.
票数 3
EN

Stack Overflow用户

发布于 2015-06-10 14:30:34

典型的用例是:

  • 将一些数据呈现给用户并接受选择(或cancellation)

  • Check

  • (例如,正确的文件类型))如果正确,则返回selection

  • ,如果不正确,则返回错误消息(仍在此对话框的上下文中)

H111在中止时,返回"null value“H212H113在重试时返回2。H214G215

真的不需要异常来处理不正确的条目,甚至取消(在2或6之后)。如果您的程序在访问文件系统或类似系统时遇到IOException,则可能会抛出其他一些异常。

调用者应该承担的唯一负担是检查返回的"null value“(null或任何合适的值),以指示用户不想做某事的选择-这是通常应该提供的选项。

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

https://stackoverflow.com/questions/30747067

复制
相关文章

相似问题

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