在我的应用程序中,我有一个.value
类,它扩展了Exception。对于许多错误情况,我使用预定义的消息引发此ApplicationException
。我还有一个扩展ApplicationException
的错误处理程序类。在HttpErrorHandler
方法中,我检查引发的异常是否为onServerError()
。如果是这样,我将错误消息作为JSON字符串返回。否则,我返回一般错误消息。
一切都按预期工作,直到我将ApplciationException
注释添加到我的控制器方法中。从那时起,所有例外情况都被提升到@Security
。
举个例子,这是抛出的内容:
java.lang.RuntimeException
My Authenticator类(扩展- 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
?
由于
答案 0 :(得分:0)
这是非常不幸的(也是不好的做法),但默认情况下@Security
注释有一个捕获所有异常处理程序,如here所示。
注意:Throwable
是Exception
和RuntimeException
我认为你唯一的选择就是用你自己的@Security
?重新实现@MySecurity
动作包装器并专门重新实现call
方法而不需要全部捕获处理程序,也许你自己。
希望有所帮助。