假設我有在Dropwizard端點,說如何覆蓋Dropwizard的默認資源異常處理?
@GET
public Response foo() { throw new NullPointerException(); }
當我打這個端點它記錄異常和一切,這是偉大的!我喜歡它。我最不喜歡的是它向status: ERROR
(這很好)的用戶返回一個很大的狀態對象,以及一個巨大的堆棧跟蹤,我不那麼興奮。
很明顯,最好是自己動手處理和處理異常情況,但有時他們會滑過去。每次在整個資源周圍編寫try catch塊都很好,但(a)很麻煩,(b)我總是更喜歡自動化解決方案來「記住」解決方案。
所以我想什麼是什麼,執行以下操作:
- 日誌中的堆棧跟蹤(我用SLF4J但我相信它會爲任何工作)
- 返回通用錯誤響應,這不會公開有關我的服務器的潛在特權信息!
我覺得必須有一個內置的方式來做到這一點 - 它已經以相對較好的方式處理異常 - 但搜索文檔還沒有發現任何東西。有這個好的解決方案嗎?
檢查了這一點:http://gary-rowe.com
然後在澤西島註冊的異常映射器/ agilestack/2012/10/23/how-to-implement -a runtimeexceptionmapper-for-dropwizard/ – Reek
建議開始區分你拋出的異常。使用自定義異常來處理你知道的故障,並用漂亮的日誌記錄把它們拋出在相同的運行時異常應該拋出並修復。如果你不想把它顯示給最終用戶,你可能會捕獲一個通用的異常,記錄細節並相應地定製'Response'和'entity'。 – nullpointer