[英]How do Spring Boot @ExceptionHandlers intercept exceptions
例如,假设我们有一个 post 映射,它创建并返回一个 person 对象,它的请求正文提供了名字和姓氏,它们都是某些数据库的主键。 如果任一值为 null,则引发异常。
假设我们设置了另一个控制器来处理异常并使用 @controlleradvice 和 @exceptionhandler 注释以及返回 ResponseEntity 的方法拦截它 它实际上如何拦截异常以及为什么处理程序的返回类型不必匹配抛出它的 post 方法的返回类型。 抱歉,如果这是一个愚蠢的问题,我似乎无法理解。 我想了解幕后发生的事情。
我了解注释的作用以及我们指定要处理的异常,我只是不明白如何
ExceptionHandler
是 Spring 面向方面的编程术语中的切入点方面。
根据切入点文档:
切入点:匹配连接点的谓词。 Advice 与切入点表达式相关联,并在与切入点匹配的任何连接点处运行(例如,执行具有特定名称的方法)
我们在ExceptionHandler
注释中定义异常类型(即Exception.class
等)。 在这种情况下,Jointpoint 方面是处理通知(此处为ControllerAdvice
)方法引发的异常。
当通知的方法中发生异常时,您应该抛出该异常并且您的弹簧建议拦截该异常并将控制传递给切入点,然后匹配异常类型并进行处理。
关于ExceptionHandler
的方法签名, 文档说它很灵活,因此返回您定义的 post 方法的类型并不严格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.