簡體   English   中英

捕捉任何異常傑克遜拋出一個ExceptionMapper

[英]Catching any exception Jackson throws with a single ExceptionMapper

我有一個JAX-RS項目,它使用Jackson來處理JSON轉換。

當Jackson拋出異常時,它會自動返回帶有錯誤描述的字符串。

因為我想返回一個自定義JSON對象,所以我創建了一個ExceptionMapper

問題是,當我確切地指定拋出的Exception的類型時, 它只捕獲異常。

例如,當發送給方法的JSON包含未知屬性時,這適用:

public class MyExceptionMapper implements ExceptionMapper<UnrecognizedPropertyException>

但是,如果我將UnrecognizedPropertyException更改為PropertyBindingException (第一個擴展),它將無法工作。

簡而言之:

如何創建一個通用異常映射器來捕獲Jackson(或我的應用程序的任何其他組件)拋出的任何異常?

嘗試

public class MyExceptionMapper implements ExceptionMapper<Exception> 

這應該是所有例外的后備。

如果找到合適的ExceptionMapper,Jackson正在尋找異常的層次結構。 只要類型層次結構中存在某些內容,它就會顯示出來。 因此,UnrecognizedPropertyException將由PropertyBinding-Exception映射器處理,但不是相反,因為UnrecognizedPropertyException Mapper更具體,可能有許多子類,然后無法確定要采用哪個Mapper。 所以它只能起作用。

因為異常是基礎異常,一切都在那里結束。

暫無
暫無

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

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