Error handling 将错误传播到父级然后再传播到父级是好主意吗?

Error handling 将错误传播到父级然后再传播到父级是好主意吗?,error-handling,Error Handling,这是软件工程中的一个普遍问题。 在低级别处理错误的代码可能太多。 另一方面,顶层处理错误可能导致信息丢失。 你觉得怎么样?这完全取决于需求是什么 在某些情况下,您确实希望向调用者抛出异常,因为调用者可能更适合处理该问题。发送电子邮件可能并不总是对系统至关重要,但当它需要告诉您有人登录了您的银行帐户时,就可以了 另一方面,您不希望冒泡出应该由被调用方法处理的异常。如果您正在编写通过FTP下载文件的内容,如果您打算稍后再试,则不希望每次断开连接都给调用方带来麻烦 因此,这同样取决于手头的情况,而不是

这是软件工程中的一个普遍问题。 在低级别处理错误的代码可能太多。 另一方面,顶层处理错误可能导致信息丢失。
你觉得怎么样?

这完全取决于需求是什么

在某些情况下,您确实希望向调用者抛出异常,因为调用者可能更适合处理该问题。发送电子邮件可能并不总是对系统至关重要,但当它需要告诉您有人登录了您的银行帐户时,就可以了

另一方面,您不希望冒泡出应该由被调用方法处理的异常。如果您正在编写通过FTP下载文件的内容,如果您打算稍后再试,则不希望每次断开连接都给调用方带来麻烦


因此,这同样取决于手头的情况,而不是经验法则。

这实际上取决于程序在哪里可以处理错误,以有用的方式报告错误,并继续一些有用的处理

在我编写的UI代码中,例如在处理事件时,我可能会调用私有方法,然后调用遇到错误的实用程序方法。在实用程序方法中处理它没有多大意义,因为它可能不知道正在处理的事件以及向用户报告错误的所有方法。事件处理的第一个级别可能处于更好的情况下来处理它,或者停止处理,或者进行必要的调整

另一方面,如果实用程序方法可以合法地处理它将要使用的所有情况下的错误(可能有一些重试逻辑或计划B逻辑),那么它可能在这里


但是,对于我所做的大部分UI代码,它通常会被传递到更高的级别,因为它在特定情况下能够更好地处理它。

我认为这是一个很好的问题。