做错误处理的最佳方法

时间:2012-04-19 22:13:29

标签: java design-patterns exception-handling interface runtimeexception

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

  1. 抛出一个延长运行时异常的异常。
  2. 将错误消息对象与我的响应一起传递。这允许每个级别在需要时通过查看错误消息来处理错误。
  3. 我喜欢1.但是,假设我创建了一个界面:

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

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

    的接口
    method1() throws ExtendedRuntimeException;
    method2() throws ExtendedRuntimeException;
    

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

3 个答案:

答案 0 :(得分:0)

您需要一种综合方法。 在应用程序中设计异常处理机制时,您需要设计强制impl处理异常的接口。这些是经过检查的例外情况。

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

是的,许多设计的接口确实附加了方法定义。

HTH 〜Ayusman

答案 1 :(得分:0)

Sudoer,恕我直言,你无法控制你的接口的实现者处理运行时(a.k.a未经检查)异常。

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

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

我发现这些很有用:

希望有所帮助。

答案 2 :(得分:0)

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

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