我必须编写的接口有问题。在我们公司的项目中,我们有一个类提供一些 Web 方法,例如:logIn、reporting、addNote 和不同的。每个方法都会抛出由某人(可能是编写此类的同一个人)编写的异常。现在我必须编写这个类的“等价物”(使用 Web 服务)并为这两个类编写接口。但是我的类没有抛出任何异常(我没有在签名中写抛出异常,我使用 try-catch 块来处理这个异常)。是否有任何简单的方法可以为这两个类编写接口(由于该异常而具有不同的签名)?或者我必须重写第一个类并在其中使用 try-catch 块(或修改我的类)。我想避免这种情况...
问问题
124 次
4 回答
2
(我没有在签名中写抛出异常,我使用 try-catch 块来处理这个异常)
这听起来像是对异常处理的滥用……除非您的代码真的可以处理所有这些异常。处理异常的正确做法是允许它传播到可以正确处理它的 cakll 堆栈的更上层点。
但无论哪种方式,您都可以编写一个通用接口,其中方法被声明为抛出异常。在您的课程版本中,只需将异常排除在签名之外;例如
public interface Foo {
public void bar() throws SomeException;
}
public class OldFoo implements Foo {
public void bar() throws SomeException { ... }
}
public class NewFoo implements Foo {
public void bar() { ... }
}
接口方法抛出异常,而该方法的实现不抛出异常是合法的 Java。
于 2013-04-29T14:45:54.637 回答
0
如果其中一个具体实现抛出异常,而另一个捕获它,那么很遗憾,您不能使用相同的接口。异常是方法定义的一部分,如果两个方法处理异常的方式不同,那么它们就不一样了。因此,恐怕您将不得不修改其中一个类。
于 2013-04-29T14:46:17.600 回答
0
你只能重写接口中声明的方法来抛出相同的异常或派生类型的异常,我的意思是你不能让你实现不抛出任何异常的方法,而在你的接口中,这些方法被描述为抛出一个特定的异常.
于 2013-04-29T14:54:42.900 回答
0
接口中定义的方法的签名必须定义异常。换句话说,例外是签名的一部分。
于 2013-04-29T14:43:32.243 回答