这是一个非常受欢迎且众所周知的短语,你应该“只捕获/抛出异常的异常”。但是,如何确定“例外”例外?
例如,在登录服务时,错误的密码非常常见,因此这并非例外。 Web应用程序的统计信息可能会显示类似于每5次尝试的一次错误登录尝试(来自没有特定用户)。同样地,尝试在网上商店中使用购物篮结账时,这可能非常普遍(特别是对于新用户)。但是,找不到的文件可以是任何一种方式。我通常会认为,如果一个方法缺少某些东西来完成它的工作,抛出一个异常,但是这里有点令人困惑。在某些情况下,未找到的文件可能很常见(例如,许多用户使用的文件共享没有严格的控制),而非锁定的生产环境缺少文件,这将是例外。
这是推断异常是否异常的正确方法吗?我可以轻松过滤无网络连接等特殊情况,但有些情况很难判断。这是主观的吗?
由于
答案 0 :(得分:1)
我认为这是非常主观的,老实说,所以我更愿意避免使用这种方法来确定何时应该使用例外。
相反,我更愿意考虑三件事:
如果#1为真,并且我没有主要的性能问题,我可能会选择使用异常,因为它会加快我的开发时间,不必编写返回代码(并手动编写逻辑代码)如果需要,它们会向上传播调用栈。当您使用异常时,调用堆栈展开对于开发时间是免费的。
如果#2为真,并且要么我不会超过一帧(可能是两个?)调用堆栈,或者我有严重的性能问题(例如,在一个紧密的循环中),那么我会我们很难找到另一种不涉及异常的方式。
异常只是程序员使用支持它们的语言的工具。我不认为他们必须具备任何“特殊”或不具有的内在价值。相反,我说当它们是工作的最佳工具时使用它们。