【发布时间】:2021-10-09 07:21:29
【问题描述】:
现在我使用 controlleradvice 制作自定义处理程序并且运行良好。我想在“发票流程失败”的自定义验证中添加其他信息。我如何做到这一点?谢谢你
【问题讨论】:
标签: spring spring-boot spring-mvc
现在我使用 controlleradvice 制作自定义处理程序并且运行良好。我想在“发票流程失败”的自定义验证中添加其他信息。我如何做到这一点?谢谢你
【问题讨论】:
标签: spring spring-boot spring-mvc
您可以定义自己的异常对象并使用它将数据从控制器方法传递到异常处理方法。
首先定义一个异常为:
public class InvoiceException extends RuntimeException {
private Long invoiceId;
private String additionalInfo;
}
然后在控制器中检查是否违反了相关的业务规则,创建这个异常的实例并抛出它:
public class InvoiceController {
@PostMapping("/invoice")
public Long processInvoice(InvoiceRequest request){
if(fail) {
throw new InvoiceException(invoiceId, "foobar");
}
}
}
在@ContorllerAdvice 中,您可以从异常实例中访问这些数据:
@ControllerAdvice
public class MyExceptionHandler {
@ExceptionHandler(InvoiceException.class)
public ResponseEntity<ErrorMessage> handle(InvoiceException ex) {
}
}
【讨论】: