我想处理验证器引发的异常。
我用ControllerAdvice注释创建了异常处理程序。它处理其他异常,但不处理MethodArgumentNotValidException。
异常处理程序
@ControllerAdvice
public class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(value
= {ResourceNotFoundException.class, EntityNotFoundException.class})
protected ResponseEntity<Object> handleNotFound(
RuntimeException ex, WebRequest request) {
APIException apiException = new APIException(HttpStatus.NOT_FOUND,
ex.getMessage(), request);
return handleExceptionInternal(ex, apiException,
new HttpHeaders(), apiException.getStatus(), request);
}
@Override
protected ResponseEntity<Object> handleMethodArgumentNotValid
(MethodArgumentNotValidException ex,
HttpHeaders headers, HttpStatus status, WebRequest request) {
APIException apiException = new APIException(HttpStatus.BAD_REQUEST,
ex.getMessage(), request);
return handleExceptionInternal(ex, apiException,
new HttpHeaders(), apiException.getStatus(), request);
}
}
已验证的类(没有getter/setter等)
public class ClassQuery {
@Min(1)
private Integer minYear;
@Min(1)
private Integer year;
@Min(1)
private Integer maxYear;
private String name;
private String profile;
}
Rest api控制器
@GetMapping
public Page<Class> getClasses(@Valid ClassQuery classQuery, Pageable pageable) {
return classService.getClasses(classQuery, pageable);
}
Api异常(没有getter/setter等)
public class APIException {
private Date timestamp;
private HttpStatus status;
private String message;
private String path;
public APIExceptionMessage(HttpStatus status, String message, WebRequest request) {
this();
this.status = status;
this.message = message;
this.path = getRequestURI(request);
}
}
目前,我从验证器获得了一个空响应,带有错误的\u请求http状态,而其他异常得到了正确处理。我也尝试过不扩展ResponseEntityExceptionHandler并用@ExceptionHandler处理它,但它忽略了我的响应正文,作为响应,它给出了默认的错误消息。我没有任何错误。
这可能有点太晚了。
我遇到了同样的问题,其中ethodArgumentNotValidExctive
不被注释为ControlllerAdvie
的类处理。在我的例子中,我想序列化并将自定义的ErrorDTO对象作为JSON发送到HTTP客户端。
解决方案:ME odArgumentNotValidExctive
应从org.springframework.web.bind.中导入。
问题内容: 我们正在进行有关如何处理REST异常的持续讨论。 响应内容类型:JSON 我们有两种解决方案: 将所有未检查的异常作为JSON响应抛出。 发送请求无效响应代码。 参数: 当出现错误时,为什么要返回JSON?只需发送无效的响应码即可。 相反的观点: 对于普通开发人员而言,响应代码的技术性太强。 你怎么说? 问题答案: 对于JSON API,我最近开发了两者。我总是使用有效的JSON进行响
问题内容: 这个问题已经在这里有了答案 : 我的PDO声明无效 (1个答案) 4年前关闭。 我正在尝试在php上使用类,但是在查找正确的错误处理方式时遇到了一些麻烦,我编写了以下代码: 这部分代码不报告错误,但根本不起作用,底部的var 返回空值。 有人可以帮我找到我错了吗? 问题答案: 除非您告知,否则PDO不会引发异常。你跑了吗: 在PDO对象上?
假设我有一个类和一个方法 现在,我想为由流传递的的每个实例调用foo,如下所示: 问题:如何正确处理异常?代码在我的机器上没有编译,因为我没有处理foo()可能引发的异常。的在这里似乎没有用。这是为什么?
问题内容: 我正在尝试在某些特定异常发生时添加一些监视。例如,如果我有这样的一个方面: 和测试类: 作为输出,我将得到: 我想知道是否有办法在引发异常后立即拦截方法执行,在建议中做点什么,然后继续在相应的catch块中执行代码?这样,如果我打电话给我,我会得到: 问题答案: 是的你可以。您需要切入点: 假设类在包中,则日志输出: 更新: 如果您想知道异常处理程序的位置,有一个简单的方法:使用封闭的
我正在尝试在发生特定异常时添加一些监视。例如,如果我有这样一个方面: 和测试等级: 作为输出,我将得到: 我想知道是否有办法在抛出异常之后拦截方法执行,在我的建议中做些什么,然后继续在相应的catch块中执行代码?因此,如果我调用我可以得到:
我在我的项目中使用Log4j 2将儿子日志写入数据库表。这些事件是基于某些MDC密钥/值对来标识的。我关心的是这个appender可以从其append方法中抛出的未经检查的LoggingExcture。这些数据库日志是在异步事务进程中生成的,我不希望主进程受到appender引发的潜在异常的影响。我应该怎么照顾它?我应该将基于配置的appender移动到自定义appender吗?在日志事件追加错误