Java 让@ExceptionHandler处理除AccessDeniedException之外的所有异常?
我编写了一个Java 让@ExceptionHandler处理除AccessDeniedException之外的所有异常?,java,spring,spring-mvc,exception-handling,Java,Spring,Spring Mvc,Exception Handling,我编写了一个@ExceptionHandler以JSON格式发送REST请求的异常。但是,由于Spring安全性的工作方式,AccessDeniedExceptions不能被处理 如果我只是在处理程序中重新调用一个AccessDeniedException,我会得到一个错误级别日志,说明: Failed to invoke @ExceptionHandler method: SomeMethod() throws java.lang.Exception org.springframework.s
@ExceptionHandler
以JSON格式发送REST请求的异常。但是,由于Spring安全性的工作方式,AccessDeniedException
s不能被处理
如果我只是在处理程序中重新调用一个AccessDeniedException
,我会得到一个错误
级别日志,说明:
Failed to invoke @ExceptionHandler method: SomeMethod() throws java.lang.Exception
org.springframework.security.access.AccessDeniedException: Access is denied
...Stack...
我无法安全地禁用类的ERROR
级别日志记录(ExceptionHandlerExceptionResolver
),但是拥有这些stacktrace对于操作人员来说非常混乱
是否有任何方法可以使
@ExceptionHandler
不处理此特定异常?我认为您可以使用全局异常处理程序,这样您就不会手动处理此AccessDeniedExceptions
,
将针对每种异常引发此全局异常(手动处理的异常处理程序除外):
我认为您可以使用全局异常处理程序,这样您就不用手动处理这个
AccessDeniedExceptions
,
将针对每种异常引发此全局异常(手动处理的异常处理程序除外):
您可以添加自定义泛型excepton超类,并从中扩展所有异常。并用ExceptionHandler捕获它们。@IlyaDyoshin不幸的是,我的应用程序总共抛出了大约3个自定义异常。大多数异常都是由框架引发的,我不希望对其进行包装。提出的问题:可能在Spring 5中得到修复。您可以添加自定义的泛型excepton超类,并从中扩展所有异常。并用ExceptionHandler捕获它们。@IlyaDyoshin不幸的是,我的应用程序总共抛出了大约3个自定义异常。大多数例外都是由我不愿意包装的框架造成的。提出的问题:可能在Spring 5中得到修复。这就是我所拥有的,也是问题所要避免的。处理
@ExceptionHandler
的类将记录我不想要的日志…这就是我所拥有的,也是问题要避免的。处理@ExceptionHandler
的类将记录我不想要的日志。。。
@ControllerAdvice
public class GlobalHandler {
@ExceptionHandler(Exception.class)
public ModelAndView handleException() {
return new ModelAndView("errorGlobal");
}
}