2014-11-04 42 views
0

我很難組織如何處理髮生在服務層的錯誤。在此方法中引發該異常的原因是提供的密碼太弱或確認ID錯誤。儘管如此,例外的名稱還沒有解決。在web層使用檢查異常來處理錯誤

但是,是否在新的應用程序中檢查了要避免的異常?如果是這樣,我如何將這樣的錯誤傳達給調用者?這種情況下的調用者是暴露Web服務的Web層。我想處理Web層中的錯誤並創建錯誤消息。

我有一個方法:

boolean confirmPasswordReset(int accountId, String confirmationId, String newPassword) throws ConstraintViolation; 

這是異常類:

public class ConstraintViolation extends Exception { 

    public ConstraintViolation(String message) { 
     super(message); 
    } 
} 

通過閱讀這篇文章,它看起來像它應該是正確的: http://www.oracle.com/technetwork/articles/entarch/effective-exceptions-092345.html

應變

  • 被認爲是:設計
  • 的一部分預期發生:定期,但很少
  • 誰在乎它:調用方法示例上游代碼:另類回報模式
  • 最佳映射:檢查異常

回答

0

我嘗試儘可能少地使用檢查過的異常。我認爲使用運行時異常並將其明確記錄就足夠了。

從你的情況看,你似乎是設計和控制Web層的人。在這種情況下,您已經知道服務層拋出哪些運行時異常以及如何處理它們。你不需要被編譯器告知。

如果異常是可恢復的,我只會使用checked異常,並且代碼的客戶端是外部的,我必須強制它處理異常。即使這樣,結果很可能會是一個空的catch塊。