哪种方法更好用于异常处理?为什么?:
(1)为整个应用程序定义一个异常,它接受一个字符串消息并显示它。在任何地方使用此例外,并使用适合该方案的特定消息。
我不知道为什么这不合适。
(2)为应用程序中的每个不同案例定义一个新的异常类。
我认为这是不合适的,因为有些情况下异常只在应用程序的一个地方。例如输入的金额是-ve是否可以为应用程序中的单个案例创建一个全新的异常类?
答案 0 :(得分:2)
绝对为所有不同情况定义新例外。
想象一下,您正在实现一个解释器/编译器。您将拥有SemanticVerifier,Interpreter,CodeGenerator(当然还有其他模块)的模块。你想知道程序崩溃时会抛出什么样的异常。哦,这是语义!看起来它是解释器中的一个错误!并且您希望用户知道,以便他可以报告更准确的错误。
如果你对每个模块都有单独的例外,我个人认为它会带来更好的设计。
答案 1 :(得分:2)
为对用户重要的每种错误定义新的例外。因此,例如,理想情况下,您应该在程序中捕获NullPointerException,并将其转换为CustomerLookupException,以便程序的用户级别可以报告“软件错误检索客户”。 Exception chaining对此非常方便,因为您也可以传递原始异常。
整个Java Tutorial on exceptions是一个很好的资源。
答案 2 :(得分:1)
您应该为每个案例定义一个新的例外。
原因是每个Exception
都可以独立处理。
例如,以不同方式捕获Exception
可以让您在某些情况下继续,或在其他情况下结束。
答案 3 :(得分:0)
在我看来,你的第一个选择更合适
(1)为整个应用程序定义一个异常,它接受一个字符串msg并显示它。并在适当的地方特定消息的所有地方使用它。
即使我在应用程序中使用了一个例外。如果为每种类型创建单独的例外,则会增加复杂性。它将有很多冗余代码。 为了表示不同类型的异常,您可以在公共异常本身中传递参数(类型或其他内容)。