使用@Security 时作为 RuntimeException 引发的异常
Exceptions raised as RuntimeException when using @Security
在我的应用程序中,我有一个扩展异常的 ApplicationException
class。对于许多错误情况,我会使用预定义消息引发此 ApplicationException
。我还有一个扩展 HttpErrorHandler
的错误处理程序 class。在那里,在 onServerError()
方法中,我检查引发的异常是否是 ApplciationException
。如果是这样,我 return 将错误消息作为 JSON 字符串。否则,我会 return 一条通用错误消息。
一切都按预期进行,直到我将 @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'
我的身份验证器 class(扩展 Security.Authenticator
的那个)仅覆盖了 getUsername()
和 onUnauthorized()
方法。
有没有办法在使用 @Security
的同时保留 ApplicationException
?
谢谢
这是非常不幸的(也是不好的做法),但是 @Security
注释默认情况下有一个 catch all 异常处理程序,如 here.
注意:Throwable
是 Exception
和 RuntimeException
的父级
我认为你唯一的选择是用你自己的(@MySecurity
?)重新实现 @Security
动作包装器并重新实现 call
方法,特别是没有抓住所有的处理程序,也许放上你自己的。
希望有所帮助。
在我的应用程序中,我有一个扩展异常的 ApplicationException
class。对于许多错误情况,我会使用预定义消息引发此 ApplicationException
。我还有一个扩展 HttpErrorHandler
的错误处理程序 class。在那里,在 onServerError()
方法中,我检查引发的异常是否是 ApplciationException
。如果是这样,我 return 将错误消息作为 JSON 字符串。否则,我会 return 一条通用错误消息。
一切都按预期进行,直到我将 @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'
我的身份验证器 class(扩展 Security.Authenticator
的那个)仅覆盖了 getUsername()
和 onUnauthorized()
方法。
有没有办法在使用 @Security
的同时保留 ApplicationException
?
谢谢
这是非常不幸的(也是不好的做法),但是 @Security
注释默认情况下有一个 catch all 异常处理程序,如 here.
注意:Throwable
是 Exception
和 RuntimeException
我认为你唯一的选择是用你自己的(@MySecurity
?)重新实现 @Security
动作包装器并重新实现 call
方法,特别是没有抓住所有的处理程序,也许放上你自己的。
希望有所帮助。