0

我正在考虑通过异常实现更好的错误处理方法。当我深入研究代码并想要返回错误时,我有两个选择:

  1. 抛出一个扩展运行时异常的异常。
  2. 将错误消息对象与我的响应一起传递。这允许每个级别在需要时通过查看错误消息来处理错误。

我喜欢1。但是,假设我创建了一个界面:

public interface Interface {
  method1();
  method2();
}

现在,在这种类型的合同中,我还没有看到将方法声明为的接口:

method1() throws ExtendedRuntimeException;
method2() throws ExtendedRuntimeException;

指定实现需要处理扩展运行时异常的更简洁的方法是什么?

4

3 回答 3

0

您需要一种综合方法。在您的应用程序中设计异常处理机制时,您将需要设计强制实现处理异常的接口。这些是检查异常。

此外,您必须事先决定处理所有异常的层或决定如何处理异常。所有较低层都向上传递异常,即向上冒泡异常。您可以通过创建异常子类或简单地按原样抛出异常来做到这一点。最好是创建一个异常子类,其中包含更多详细信息,如错误代码/消息等。

是的,许多设计都有接口,这些接口确实将 throws 附加到方法定义上。

HTH ~阿尤斯曼

于 2012-04-19T22:20:34.007 回答
0

Sudoer,恕我直言,您无法控制接口的实现者处理运行时(也称为未经检查)异常。

就像@Ayusman 提到的那样,您可以声明并要求实现者处理检查的异常,但对于运行时异常,它总是有义务他们不需要声明它。此外,对于作为实现者的未经检查的异常,我可以抛出我自己的运行时异常,作为接口设计者,你还没有声明。

这是真的,因为您只声明了一个合同,但您没有足够的上下文来了解可能的运行时异常类型。希望我能在这里传达这个想法。

我发现这些很有用:

希望有帮助。

于 2012-04-19T22:43:24.550 回答
0

关于异常错误处理有很多思想流派。可以在这里找到一篇长但内容丰富的文章:http: //articles.vconst.com/2009/08/error-handling-and-exceptions-in-java.html

他实际上建议为运行时异常放置一个 throws 声明。

于 2012-04-19T22:55:24.057 回答