2011-12-08 29 views
2

这是异常处理的一种更好的方法,更好,为什么?:哪种方式是异常处理

(1)定义整个应用程序,它需要一个字符串消息,并显示一个例外。使用适用于该场景的特定消息随处使用此例外。

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

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

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

回答

2

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

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

2

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

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

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

+0

请您详细说明一下。为什么肯定这样? – Nik

+0

@NikunjChauhan我在做什么:) – talnicolas

1

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

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

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

0
在我看来

您的第一选择是更适合

(1)定义整个应用程序,它需要一个字符串味精,并显示一个例外。并在适当的地方特定的消息在所有地方使用它。

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