0

我在服务器端有这种方法,通过 RPC 与客户端代码进行通信。

@Override
public void registerStudent(param1, param2...) throws IllegalArgumentException {

    //some code here

    try {
        //some code here
    } catch (ConstraintErrorViolationException e) {
        throw new RegisterFailedException();
    }
}

我有一大堆代码处理失败。

@Override
public void onFailure(Throwable caught) {
    displayErrorBox("Could not register user", caught.getMessage());
}

目前,该onFailure()函数不区分随机异常和我要处理和处理的特定异常,即RegisterFailedException.

我怎样才能成功地正确处理这两种不同类型的错误?

4

2 回答 2

1

如果RegisterFailedException是客户端软件包的一部分,您可以简单地使用instanceof

if(caught instanceof RegisterFailedException) {
   // handle RegisterFailedException
} 
else {
  // handle other exceptions
}
于 2013-07-17T13:29:14.467 回答
1

所以你的例外

public class RegisterFailedException extends RuntimeException {

    public RegisterFailedException () {
        super();
    }
}

并且您的方法会引发异常,例如

throws new RegisterFailedException();

然后在 onFailure() 检查

if (caught instanceof RegisterFailedException){

}
于 2013-07-17T13:29:32.610 回答