簡體   English   中英

捕獲未引發的檢查異常

[英]Catching non thrown checked exception

我有一個通過EJB調用外部API的代碼,並且該API偶爾會泄漏不屬於客戶端工具包的異常,因此導致ClassNotFoundException

我在電話周圍有一個try-catch塊:

    try {
      thirdPartyLibrary.finalInvokeMethod();
    } catch (SomeException exception) {
      //Do something
    } catch(
    ..
    } catch (Exception exception) {
      if (exception instanceof ClassNotFoundException) {
         log.error("....");
      }
    }

我想避免在catch中使用instanceof,但是如果我為ClassNotFoundException添加單獨的catch子句,則由於thirdPartyLibrary.finalInvokeMethod();編譯器會產生錯誤“ Unreachable catch block” thirdPartyLibrary.finalInvokeMethod(); 不會拋出ClassNotFoundException

有沒有更好的方法來解決這個問題?

我找到了一種解決方法。 我已經包裝了thirdPartyLibrary.finalInvokeMethod(); 在另一種引發檢查異常的方法中。 因此,我得到了一個專用的catch子句,沒有編譯器錯誤。

private someMethod() {
  try {
    callExternalAPI();
  } catch (SomeException exception) {
    //Do something
  } catch(
  ..
  } catch (ClassNotFoundException exception) {
    log.error("....");
    //Do something
  } catch (Exception exception) {
    //Do something
  }
}

private void callExternalAPI() throws ClassNotFoundException {
  thirdPartyLibrary.finalInvokeMethod();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM