在java中的接口方法中引发多个异常
我想问,如何在我的界面中提到这一点在java中的接口方法中引发多个异常,java,Java,我想问,如何在我的界面中提到这一点 public class find(int x) throws A_Exception, B_Exception{ ---- ---- --- } 我想说,我可以在一个接口中提到一个异常,但如何在我的接口中提到我的方法将抛出两个异常,即A和B 上面提到的代码片段只适用于A,不适用于B。。。帮助 public interface dictionary{ public void insert(int x) throws Dictionary_FullEx
public class find(int x) throws A_Exception, B_Exception{
----
----
---
}
我想说,我可以在一个接口中提到一个异常,但如何在我的接口中提到我的方法将抛出两个异常,即A和B
上面提到的代码片段只适用于A,不适用于B。。。帮助
public interface dictionary{
public void insert(int x) throws Dictionary_FullException, Duplicate_Element_FoundException;
}
...
public class SortedArray implements dictionary{
public void insert(int x) throws Dictionary_FullException, Duplicate_Element_FoundException {
---------
}
但是当我编译它的时候。。。上面写着
java:66:insert(int)in
assign.SorterDarray无法实现
在assign.dictionary中插入(int);
重写的方法不会引发
assign.SortedArray.Duplicate\u元素\u FoundException public
无效插入(int x)抛出
字典\u完全例外
您需要在可以引发异常的方法上指定它。如果它可以引发超过1种类型的异常,您只需用“,”分隔它们。 e、 g
可以为接口方法声明任意数量的异常。但是你在问题中给出的类是无效的。应该是
public class MyClass implements MyInterface {
public void find(int x) throws A_Exception, B_Exception{
----
----
---
}
}
然后一个界面看起来像这样
public interface MyInterface {
void find(int x) throws A_Exception, B_Exception;
}
我想你要求的是下面的代码:
public interface A
{
void foo()
throws AException;
}
public class B
implements A
{
@Overrides
public void foo()
throws AException,
BException
{
}
}
除非BeException是AEException的子类,否则这将不起作用。重写方法时,必须符合父级提供的签名,异常是签名的一部分
解决方案是声明接口,接口也抛出一个beexception
原因是您不希望看到这样的代码:
public class Main
{
public static void main(final String[] argv)
{
A a;
a = new B();
try
{
a.foo();
}
catch(final AException ex)
{
}
// compiler will not let you write a catch BException if the A interface
// doesn't say that it is thrown.
}
}
如果B::foo抛出一个BeException,会发生什么?该计划将不得不退出,因为它可能没有捕获。为了避免这种情况,子类不能更改抛出的异常类型(除非它们可以从列表中删除异常)。公共类查找(int x)
,这是否编译过?这与接口有什么关系?
public class Main
{
public static void main(final String[] argv)
{
A a;
a = new B();
try
{
a.foo();
}
catch(final AException ex)
{
}
// compiler will not let you write a catch BException if the A interface
// doesn't say that it is thrown.
}
}