哪种方式更适合异常处理

时间:2011-12-08 04:04:38

标签: java exception-handling

哪种方法更好用于异常处理?为什么?:

(1)为整个应用程序定义一个异常,它接受一个字符串消息并显示它。在任何地方使用此例外,并使用适合该方案的特定消息。

我不知道为什么这不合适。

(2)为应用程序中的每个不同案例定义一个新的异常类。

我认为这是不合适的,因为有些情况下异常只在应用程序的一个地方。例如输入的金额是-ve是否可以为应用程序中的单个案例创建一个全新的异常类?

4 个答案:

答案 0 :(得分:2)

绝对为所有不同情况定义新例外。

想象一下,您正在实现一个解释器/编译器。您将拥有SemanticVerifier,Interpreter,CodeGenerator(当然还有其他模块)的模块。你想知道程序崩溃时会抛出什么样的异常。哦,这是语义!看起来它是解释器中的一个错误!并且您希望用户知道,以便他可以报告更准确的错误。

如果你对每个模块都有单独的例外,我个人认为它会带来更好的设计。

答案 1 :(得分:2)

为对用户重要的每种错误定义新的例外。因此,例如,理想情况下,您应该在程序中捕获NullPointerException,并将其转换为CustomerLookupException,以便程序的用户级别可以报告“软件错误检索客户”。 Exception chaining对此非常方便,因为您也可以传递原始异常。

整个Java Tutorial on exceptions是一个很好的资源。

答案 2 :(得分:1)

您应该为每个案例定义一个新的例外。

原因是每个Exception都可以独立处理。

例如,以不同方式捕获Exception可以让您在某些情况下继续,或在其他情况下结束。

答案 3 :(得分:0)

在我看来,你的第一个选择更合适

(1)为整个应用程序定义一个异常,它接受一个字符串msg并显示它。并在适当的地方特定消息的所有地方使用它。

即使我在应用程序中使用了一个例外。如果为每种类型创建单独的例外,则会增加复杂性。它将有很多冗余代码。 为了表示不同类型的异常,您可以在公共异常本身中传递参数(类型或其他内容)。