gpt4 book ai didi

spring - @ControllerAdvice 异常处理方法不会被调用

转载 作者:IT老高 更新时间:2023-10-28 13:46:42 28 4
gpt4 key购买 nike

我有以下 Controller 类

package com.java.rest.controllers;
@Controller
@RequestMapping("/api")
public class TestController {

@Autowired
private VoucherService voucherService;


@RequestMapping(value = "/redeemedVoucher", method = { RequestMethod.GET })
@ResponseBody
public ResponseEntity redeemedVoucher(@RequestParam("voucherCode") String voucherCode) throws Exception {
if(voucherCode.equals( "" )){
throw new MethodArgumentNotValidException(null, null);
}
Voucher voucher=voucherService.findVoucherByVoucherCode( voucherCode );
if(voucher!= null){
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json; charset=utf-8");
voucher.setStatus( "redeemed" );
voucher.setAmount(new BigDecimal(0));
voucherService.redeemedVoucher(voucher);
return new ResponseEntity(voucher, headers, HttpStatus.OK);

}
else{
throw new ClassNotFoundException();
}
};

}

对于异常处理,我使用 Spring3.2 建议处理程序如下

package com.java.rest.controllers;


@ControllerAdvice
public class VMSCenteralExceptionHandler extends ResponseEntityExceptionHandler{

@ExceptionHandler({
MethodArgumentNotValidException.class
})
public ResponseEntity<String> handleValidationException( MethodArgumentNotValidException methodArgumentNotValidException ) {
return new ResponseEntity<String>(HttpStatus.OK );
}

@ExceptionHandler({ClassNotFoundException.class})
protected ResponseEntity<Object> handleNotFound(ClassNotFoundException ex, WebRequest request) {
String bodyOfResponse = "This Voucher is not found";
return handleExceptionInternal(null, bodyOfResponse,
new HttpHeaders(), HttpStatus.NOT_FOUND , request);
}

}

我已将 XML bean 定义定义为

<context:component-scan base-package="com.java.rest" />

Controller 抛出的异常不被 Controller 通知处理器处理。我已经用谷歌搜索了几个小时,但找不到任何引用为什么会发生这种情况。我按照 http://www.baeldung.com/2013/01/31/exception-handling-for-rest-with-spring-3-2/ 的描述进行了操作在这里。

如果有人知道,请告诉为什么处理程序没有处理异常。

最佳答案

我找到了解决上述问题的方法。实际上@ControllerAdvice 需要在 XML 文件中声明 MVC 命名空间。或者我们可以使用带有@ControllerAdvice 注解的@EnableWebMvc。

关于spring - @ControllerAdvice 异常处理方法不会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16582411/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com