在更有意义的例外中包含例外以便最终用户获益

时间:2010-12-22 17:12:43

标签: exception exception-handling

在异常处理中,为了用户的利益,有时将异常包装在更有意义的异常中是一种好习惯。例如。在networkexception中包含timeoutexception。

但是,抛出的每个异常对用户来说都是陌生的。那么它是不是最好包装用户可能看到的每个例外?如果是这种情况,可能需要创建一些仅用于此目的的自定义异常,这似乎是一件非常低效的事情。

由于

1 个答案:

答案 0 :(得分:0)

我之前也考虑过这个问题。

我认为你不应该包装用户可能看到的每个异常,因为虽然对用户来说无关紧要的是什么特定异常,但它对你很重要。如果按照用户应该看到的内容进行操作,您最终可能会将所有内容包装在最高级别,并且您的代码中将失去所有特异性。

假设您编写了一种联系Web服务并解析响应的方法。在您的代码中,您可能希望辨别服务器错误(NetworkException)和解析错误(IOException)。对于这两种情况,您只需告诉用户“发生错误”,因为他们不关心具体问题是什么。但是,您可能希望记录不同的消息或以其他方式响应任何一个消息。