为什么此catch块在编译时给出错误,此代码用于通过jvtsession包装额外的权限

public void cancelOperation() throws ErrorException {
    OCAClientUtil.checkIdleTimeout();
    if (!queryInProgress)
        return;
    String searchID = getSearchId();

    OCAClientAsset.resetIdleTimer();
    Security.runAs(asset.getSubject(), new PrivilegedAction(){
        public Object run(){
            try {
                jvtxsession.cancelQuery(searchID);
            } catch (Exception ex) {
                throw OCAClientUtil.newErrorException(ex, "Cancel Query Work Order: ");
            }
            return null;
        }
    });
    queryInProgress = false;
}

为什么出现上述错误

最佳答案

run()回调中的Security.runAs()方法未声明throws ErrorException。由于未将回调定义为引发任何检查的异常,因此您不能在回调实现中引发它们。

10-07 13:49