我有一个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
       }
    }


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

最佳答案

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

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

09-12 12:28