我为运行时可能发生的各种错误创建了多个自定义异常。为此,我使用@ControllerAdvice注释和全局错误处理程序(如下所述:Spring Boot 异常处理。我还在数据库级别实现了约束(如果这很重要,它是一个SQL Server数据库),并且我有一个表,该表具有插入数据时可能引发的两个不同约束。
我现在想做的是在Spring Boot中为数据库级别的每个约束实现自定义异常,这样我就可以向用户反馈他试图发送到我后端的数据集有什么问题。这可能吗?如果是,怎么做?
Spring使用DataAccessException层次结构,让我们在不知道数据库细节的情况下处理异常。
您可以在控制器建议中捕获它们并应用所需的逻辑。
更新:
尝试将此行放在您的控制器建议中
@ExceptionHandler(DataAccessException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ResponseBody
public RestApiError handle(DataAccessException e) {
// Add your logic here
}
正如@Jaume所提到的——Spring将异常包装在它自己的层次结构中。然而,它实际上包装了由数据库驱动程序创建的原始异常,如果您使用JPA/Hibernate,异常也包装在两者之间。那个原始异常包含您感兴趣的数据。例如,如果我有一个实体Book
,对字段name
具有唯一约束,并且我尝试创建两个具有相同名称的书,那么如果我使用HSQLDB内存数据库,那么我会得到以下异常层次结构(第一个是顶部的那个。
org.springframework.dao.DataIntegrityViolationException ( from Spring)
org.hibernate.exception.ConstraintViolationException ( from Hibernate)
java.sql.SQLIntegrityConstraintViolationException ( from hsqldb driver)
异常的最内部或根本原因包含有关约束冲突和表的信息。
java.sql.SQLIntegrityConstraintViolationException: integrity constraint violation: unique constraint or index violation; UK_WUGRYET8MF6OI28N00X2EOC4 table: BOOK
您还可以获得JDBC定义的<code>SQLState
public static Throwable getRootException(Throwable exception){
Throwable rootException=exception;
while(rootException.getCause()!=null){
rootException = rootException.getCause();
}
return rootException;
}
因此,实质上,您需要在异常处理程序中获取异常的根本原因,并为客户端构建适当的响应。
本文向大家介绍SpringBoot错误处理机制以及自定义异常处理详解,包括了SpringBoot错误处理机制以及自定义异常处理详解的使用技巧和注意事项,需要的朋友参考一下 上篇文章我们讲解了使用Hibernate Validation来校验数据,当校验完数据后,如果发生错误我们需要给客户返回一个错误信息,因此这节我们来讲解一下SpringBoot默认的错误处理机制以及如何自定义异常来处理请求错误。
本文向大家介绍Springboot之自定义全局异常处理的实现,包括了Springboot之自定义全局异常处理的实现的使用技巧和注意事项,需要的朋友参考一下 前言: 在实际的应用开发中,很多时候往往因为一些不可控的因素导致程序出现一些错误,这个时候就要及时把异常信息反馈给客户端,便于客户端能够及时地进行处理,而针对代码导致的异常,我们一般有两种处理方式,一种是throws直接抛出,一种是使用try.
我使用的是Nifi 0.4.1版本。我写自定义代码转换CSV到avro格式。我已经创建了类文件,并能够生成nar文件。将nar文件放置在lib目录中,并重新启动nifi服务器。 任何帮助都很感激.. 谢谢,
我的要求是,如果post请求的JSON无效,我将需要发送400个HTTP响应代码,如果任何字段不可解析,返回状态代码将为422。例如,post请求可以是: Dto类提供如下:, 这是发出POST请求的控制器, 如果“金额”是,比如说,“sfdfd”,这不是大小数,我们应该提供422。但如果“金额”为“-12.3343”,则这是约束验证错误,但数据有效且可分析。所以我们不能拥有422。 这是我的异常
当程序出现错误或者异常时,我们一般会希望在开发时输出报错信息,在生产环境时隐藏详细的信息。 在 imi 中,提供了 Http 服务的错误异常默认处理器支持。 默认 Http 错误处理器:Imi\Server\Http\Error\JsonErrorHandler 指定默认处理器 配置文件中: return [ 'beans' => [ 'HttpErrorHan
本文向大家介绍ASP.NET MVC中异常处理&自定义错误页详析,包括了ASP.NET MVC中异常处理&自定义错误页详析的使用技巧和注意事项,需要的朋友参考一下 一、应用场景 对于B/S应用程序,在部署到正式环境运行的过程中,很有可能出现一些在前期测试过程中没有发现的一些异常或者错误,或者说只有在特定条件满足时才会发生的一些异常,对于使用ASP.NET MVC开发的应用程序站点,在部署到IIS上