Java @ExceptionHandler不适用于特定的hibernate异常
我试图捕获一些内部异常,然后用更好的消息提示最终用户。但在这个例外情况下: 异常堆栈跟踪Java @ExceptionHandler不适用于特定的hibernate异常,java,spring,hibernate,uitableview,exception-handling,Java,Spring,Hibernate,Uitableview,Exception Handling,我试图捕获一些内部异常,然后用更好的消息提示最终用户。但在这个例外情况下: 异常堆栈跟踪 @ExceptionHandler(值={javax.validation.ConstraintViolationException.class, org.hibernate.exception.ConstraintViolationException.class})似乎没有按预期工作 我刚刚检查了这一点,指出当与常规处理程序一起使用时,应该处理特定的异常处理程序 @RestControllerAdvice
@ExceptionHandler(值={javax.validation.ConstraintViolationException.class,
org.hibernate.exception.ConstraintViolationException.class})
似乎没有按预期工作
我刚刚检查了这一点,指出当与常规处理程序一起使用时,应该处理特定的异常处理程序
@RestControllerAdvice
@Slf4j
public class GlobalControllerExceptionHandler {
@ExceptionHandler(value = {javax.validation.ConstraintViolationException.class,
org.hibernate.exception.ConstraintViolationException.class})
public void constraintViolationException(Exception ex,
WebRequest req) {
log.error("Constraint violation while processing {}", req.toString());
}
@ExceptionHandler(value = {Exception.class})
public void unknownException(Exception ex, WebRequest req) {
log.error("Unknown Internal Exception happens");
}
}
而且这也使得多个异常可以在单个处理程序中处理
@RestControllerAdvice
@Slf4j
public class GlobalControllerExceptionHandler {
@ExceptionHandler(value = {javax.validation.ConstraintViolationException.class,
org.hibernate.exception.ConstraintViolationException.class})
public void constraintViolationException(Exception ex,
WebRequest req) {
log.error("Constraint violation while processing {}", req.toString());
}
@ExceptionHandler(value = {Exception.class})
public void unknownException(Exception ex, WebRequest req) {
log.error("Unknown Internal Exception happens");
}
}
有什么我错过了,谢谢你提供的有用的细节 您试图处理一个
DataIntegrityViolationException
,但您的异常处理程序只处理ConstraintViolationException
s
将异常类型添加到处理程序:
@ExceptionHandler({
javax.validation.ConstraintViolationException.class,
org.hibernate.exception.ConstraintViolationException.class,
org.springframework.dao.DataIntegrityViolationException})
清理类路径并重新编译类,然后在类路径未更新的情况下运行。请添加完整的stacktrace以识别问题。。。看起来你放在这里的代码有一半…@Vikrant我刚刚添加了更多的细节,对于这个案例,你会怎么说?谢谢你的帮助。我刚试过,但也不行。正如我所提到的,嵌套异常应该能够被检测和处理。