在界面中,我应该为每个方法使用try-catch或throws?

时间:2013-06-25 03:56:21

标签: java interface

public interface RMIInterface extends Remote {
    public byte[] geScreen() throws RemoteException;
    public byte[] getProcessList() throws RemoteException;
    public boolean execute(String command) throws RemoteException;
    public boolean messageTo(String msg,String user) throws RemoteException;
    public boolean saveImage(byte[] image,String user) throws RemoteException;
    public byte[][] getimages(String user,String date)throws RemoteException;
}

上面的RMI接口方法抛出RemoteException,如果我将这些方法包含在try中,并捕获RemoteException,那就没关系。

4 个答案:

答案 0 :(得分:8)

你不能在接口中使用try-catch,因为这里没有实现,只有规范/收缩。相反,您可以使用throws <exception list>,就像您已经完成的那样。

答案 1 :(得分:2)

try-catch块中调用这些方法意味着您使用相同的方法itselft处理异常。相反,如果你对方法使用throws声明,那么它说这个方法可以throw这种类型的异常,从技术上来说就是这个异常,那个异常需要由调用它的方法来处理方法

如果是界面

  • 您在界面中编写的任何方法都是publicabstract
  • 编写try-catch时,您必须提供该方法的实现,如果是接口,则无法执行此操作。
  • 因此,即使您非常想在界面中编写try-catch,也无法执行此操作:)

如果您想在同一方法中处理异常或使调用方法处理异常,则由您决定。

这是处理异常的方法的示例

public static void methodWithNoThrows(){
    try{
        throw new Exception();
    }catch(Exception e){
        e.printStackTrace();
    }

}

这是通过声明抛出

的方法避免异常的示例
 public static void methodWithThrows() throws Exception{

    throw new Exception();
}

所以调用方法必须处理它

答案 2 :(得分:2)

RMI中的远程接口方法应抛出RemoteException。这些异常必须由调用远程接口声明的方法的客户端捕获。

接口本身无法捕获由其声明的方法抛出的异常。

答案 3 :(得分:2)

接口本身不可实例化(或者有方法体,直到默认方法),因此不能有try-catch块。

但是,请考虑您在此处声明的内容:此界面中的每个方法现在都有一个已检查的异常。如果您打算在运行此代码时主动捕获可能抛出的异常,那么将这些方法声明为抛出任何内容都没有任何附加值。另一方面,如果您想明确表示使用此API的代码会捕获结尾的任何异常,那么这是可以接受的。