在GWT中捕获异常

时间:2014-06-10 06:19:36

标签: java gwt

我有一个GWT项目,我有一个像这样的方法:

    @Override
    public void onFailure(Throwable caught)
    {
        if (caught.getClass()== MyException.class)
        {
            //do specific stuff
        }
        else
        {
            // do generic stuf
        }
    }

MyException是自定义的异常。我的一位同事告诉我,因为这将转换成JavaScript,“没有类”,这不是一个好主意,我应该使用:

    @Override
    public void onFailure(Throwable caught)
    {
       try {
         throw caught;
       } catch (MyException e) {
         //do specific stuff
       } catch (Throwable t) {
         //do generic stuff
       } 
    }

由于第一种方式确实有效(至少在我身边),如果我继续使用它会有任何问题,还是应该采用第二种方式?

2 个答案:

答案 0 :(得分:1)

您可以使用instanceof运算符,它可以运行 -

@Override
public void onFailure(Throwable caught)
{
    if (caught instanceof MyException)
    {
        //do specific stuff
    }
    else
    {
        // do generic stuf
    }
}

答案 1 :(得分:0)

我个人更喜欢第二种方式。

您没有捕获的任何异常都可以由全局UncaughtExceptionHandler处理。

GWT.setUncaughtExceptionHandler(new UncaughtExceptionHandler() {
  public void onUncaughtException(Throwable e) {
    // TODO Global Exception Handling ...
  }
});