2016-06-23 130 views
0

爲什麼這個catch塊是在編譯時給出錯誤,該代碼是用來包裹額外的許可與jvtsession錯誤:未報告的異常ErrorException;必須捕獲或聲明拋出

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; 
} 

爲什麼提到的錯誤上面來了

+0

您是否仔細查看編譯錯誤所指的是哪一行/哪一個方法?這是一個相當自我解釋的問題。 – BalusC

回答

2

run()方法在Security.runAs()的回調中未聲明throws ErrorException。由於回調沒有定義爲拋出任何檢查的異常,因此不能將它們拋入回調實現中。

相關問題