为什么此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
。由于未将回调定义为引发任何检查的异常,因此您不能在回调实现中引发它们。