使用@Security时,异常引发为RuntimeException

时间:2015-10-20 10:40:11

标签: java playframework playframework-2.4

在我的应用程序中,我有一个.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.AuthenticatorgetUsername()方法。

有没有办法在使用onUnauthorized()时保留ApplicationException

由于

1 个答案:

答案 0 :(得分:0)

这是非常不幸的(也是不好的做法),但默认情况下@Security注释有一个捕获所有异常处理程序,如here所示。

注意:ThrowableExceptionRuntimeException

的父级

我认为你唯一的选择就是用你自己的@Security?重新实现@MySecurity动作包装器并专门重新实现call方法而不需要全部捕获处理程序,也许你自己。

希望有所帮助。