0

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

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

我喜欢1。但是,让我们说我创建一个接口:

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

现在,在这种类型的合同,我还没有看到,申报方法为接口:

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

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

+0

一般来说,声明'抛出'的方法是'我不会处理异常'。因此,没有在合同中明确指定这个方法的方法应该被认为是这样的处理程序。 – Dan 2012-04-19 22:44:23

回答

0

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

此外,您将不得不事先决定处理所有异常或决定如何处理异常的图层。所有较低层通过例外,即将例外泡起。你可以通过创建你的异常子类来完成它,或者直接抛出异常。最好的办法是创建一个例外子类,其中包含更多详细信息,如错误代码/消息等。

是的,许多设计都有接口,这些接口的方法定义都附带了throws。

HTH 〜Ayusman

0

Sudoer,恕我直言,你无法控制你的界面处理运行时的实施者(a.k.a unchecked)异常。

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

这是真的,因为你只声明一个合约,但你没有足够的上下文来处理可能的运行时异常。希望我能在这里传达这个想法。

我发现这些有用的:

希望有所帮助。