@ExceptionHandler注释方法不处理自定义异常

博士 阿拉法特·艾哈迈德(Arafat Al Mahmud)

我有一个自定义的异常类定义为

public class CustomAuthenticationException extends RuntimeException{

}

从控制器方法,我抛出此异常,如下所示

    @RequestMapping(value="/tasks", method=RequestMethod.GET)
    public String loadTasks(HttpServletRequest request){

        try
        {   
            if (!isAuthenticatedRequest(request)) 
            {

                throw new CustomAuthenticationException();
            }

        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }

        return "tasks/tasks";
    }

为了从该控制器的范围捕获此异常,我定义了一个带有@ExceptionHandler注释的方法,如下所示

    @ExceptionHandler(CustomAuthenticationException.class)
    public void handleCustomException(CustomAuthenticationException ex){
        //method is not getting invoked
    }

当我启动GET请求并期望通过上述方法处理异常时,我在控制台中仅获得错误堆栈跟踪。永远不会调用异常处理程序方法。

但是,使用其他已定义的异常(如)MethodArgumentNotValidException,可以正确调用处理程序方法。例如,我使以下异常处理程序正常工作:

    @ExceptionHandler(MethodArgumentNotValidException.class)
    @ResponseBody
    public ErrorResponseHolder handleFieldValidationError(MethodArgumentNotValidException ex, HttpServletResponse response){
        //method got invoked. do something with the exception
    }

如何使用自定义例外解决问题?

迪列普

处理异常是不正确的,在loadTasks方法中,您将引发异常并捕获异常,因此该异常无法传播。

如果要处理未处理的异常,例如通用异常(Exception.class),则需要编写一个应在通用异常处理类中处理所有这些异常的方法。

@ExceptionHandler(Exception.class)
public void handleUnhandledException(Exception ex){
// handle the exception here
}

一旦引发异常,就永远不要以相同的方法捕获异常,而在发送适当响应的地方捕获异常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

@ExceptionHandler注释方法不处理自定义异常

来自分类Dev

自定义异常处理

来自分类Dev

Rest Template自定义异常处理

来自分类Dev

处理任务异常-自定义TaskScheduler

来自分类Dev

PLSQL处理自定义异常

来自分类Dev

Rest Template自定义异常处理

来自分类Dev

在方法内设置自定义注释?

来自分类Dev

在Java中定义自定义异常处理程序?

来自分类Dev

编写自定义异常的最佳方法

来自分类Dev

编写自定义异常的最佳方法

来自分类Dev

如何编写自定义注释并处理

来自分类Dev

编写自定义的Lombok注释处理程序

来自分类Dev

Jeta:如何创建自定义注释处理器

来自分类Dev

自定义ExceptionHandler更改检测滞后

来自分类Dev

从 WebApi 返回自定义错误响应而不抛出异常

来自分类Dev

设计器中的自定义控件未处理异常

来自分类Dev

在Flask中处理自定义异常时出错(Python)

来自分类Dev

在JAX-WS中处理异常自定义

来自分类Dev

无效的UUID的自定义异常处理程序

来自分类Dev

自定义异常的处理程序在哪里

来自分类Dev

自定义异常处理程序C#

来自分类Dev

Laravel - 在自定义处理程序中捕获异常

来自分类Dev

处理自定义代码中的 NoneType 异常

来自分类Dev

春季自定义注释

来自分类Dev

Java自定义注释

来自分类Dev

从junit测试获取自定义方法注释值

来自分类Dev

如何创建自定义Java注释以记录方法参数

来自分类Dev

Spring方面在接口方法上调用自定义注释

来自分类Dev

使用自定义注释的调用方法-JAVA