2017-05-05 125 views
4

我有一個JAX-RS項目,使用傑克遜來處理JSON轉換。捕捉任何異常傑克遜拋出一個ExceptionMapper

當Jackson發生異常時,它會自動返回一個帶有錯誤描述的字符串。

由於我想返回一個自定義的JSON對象,我創建了一個ExceptionMapper

的問題是,它僅漁獲當我指定正是異常的類型拋出的異常。

例如,當發送到方法JSON包含未知屬性,這個工程:

public class MyExceptionMapper implements ExceptionMapper<UnrecognizedPropertyException> 

但是,如果我改變UnrecognizedPropertyExceptionPropertyBindingException(其中第一擴展),它不會工作。

簡而言之:

如何創建,捕捉傑克遜拋出的任何異常(或我的應用程序的任何其他部件,對於這個問題)一般異常映射器?

回答

0

嘗試

public class MyExceptionMapper implements ExceptionMapper<Exception> 

這應該是所有異常的回退。

如果Jackson找到合適的ExceptionMapper,就會從異常中尋找hierarchie。 它看起來只要在類型層次結構中有某些東西。 因此,UnrecognizedPropertyException將由PropertyBinding-異常映射程序處理,但不是其他方式,因爲UnrecognizedPropertyException映射程序更具體可能有許多子類,然後無法確定要採用哪個映射程序。所以它只能向上工作。

因爲異常是基礎異常,所有事情都結束了。