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,那就没关系。
答案 0 :(得分:8)
你不能在接口中使用try-catch,因为这里没有实现,只有规范/收缩。相反,您可以使用throws <exception list>
,就像您已经完成的那样。
答案 1 :(得分:2)
在try-catch
块中调用这些方法意味着您使用相同的方法itselft处理异常。相反,如果你对方法使用throws
声明,那么它说这个方法可以throw
这种类型的异常,从技术上来说就是这个异常,那个异常需要由调用它的方法来处理方法
如果是界面
public
和abstract
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的代码会捕获其结尾的任何异常,那么这是可以接受的。