2015-10-20 39 views
2

在我的應用程序中,我有一個擴展了Exception的ApplicationException類。對於很多錯誤情況,我用一個預定義的消息提出這個ApplicationException。我也有一個錯誤處理程序類,它擴展了HttpErrorHandler。在那裏,在onServerError()方法中,我檢查是否引發異常是ApplciationException。如果是這樣,我將返回錯誤消息作爲JSON字符串。否則,我返回一個通用的錯誤消息。在使用@Security時引發的RuntimeException異常

一切按預期工作,直到我將@Security註釋添加到我的控制器方法。從那時起,所有的例外都被提升到java.lang.RuntimeException

舉個例子,下面是被拋出:

- with @Security annotation: java.lang.RuntimeException: com.mypackage.ApplicationException: Invalid value supplied for entered parameter 'sort' 
- without @Security annotation: com.mypackage.ApplicationException: Invalid value supplied for entered parameter 'sort' 

我的鑑定者類(擴展Security.Authenticator一)只覆蓋了getUsername()onUnauthorized()方法。

有沒有辦法在保留ApplicationException的同時仍然使用@Security

感謝

回答

0

這是很不幸的(和糟糕的做法),但@Security註釋默認情況下有一個包羅萬象的異常處理器看到here

注:Throwable是既ExceptionRuntimeException

我認爲你唯一的選擇就是重新實現@Security動作包裝與父自己(@MySecurity?),並明確重新實施call方法沒有抓住所有的處理程序,也許把你自己的。

希望有所幫助。

+0

我明白了。我應該查看安全類的來源。可悲的是,你看起來是對的,唯一的方法就是重寫派生類中的call()方法。 –