我有幾個從jax-rs Web服務調用的EJB。但是,每次我調用其中一個EJB方法時,我都會使用攔截器攔截該調用。這個攔截器檢查API密鑰的參數,如果它不存在或不存在於我的數據庫中,它會拋出一個我希望在我的jax-rs代碼中捕獲的異常。然而,由於我的jax-rs類不知道這個異常被拋出的可能性,即使異常可能是一個檢查異常,這裏最好的做法是什麼?聲明拋出異常而不拋出它
- 聲明我EJB拋出異常(而沒有把他們自己)
- 使我異常的未經檢查的異常,並檢查反正它?
- 還有別的嗎?
我有幾個從jax-rs Web服務調用的EJB。但是,每次我調用其中一個EJB方法時,我都會使用攔截器攔截該調用。這個攔截器檢查API密鑰的參數,如果它不存在或不存在於我的數據庫中,它會拋出一個我希望在我的jax-rs代碼中捕獲的異常。然而,由於我的jax-rs類不知道這個異常被拋出的可能性,即使異常可能是一個檢查異常,這裏最好的做法是什麼?聲明拋出異常而不拋出它
我想通過拋出未經檢查的異常是最好的。然後我使用異常映射器來捕獲異常並處理它。
https://docs.oracle.com/javaee/6/api/javax/ws/rs/ext/ExceptionMapper.html
剩下的唯一的事情就是異常輸出抑制到日誌文件。
請注意,如果您使用EJB引發未經檢查的異常,則需要使用'@ ApplicationException',否則EJB容器將回滾該異常並將其轉換爲EJBException。 –