全局异常处理
按照上述写法,所有的Controller层方法均需要增加try-catch
逻辑,使用Spring MVC提供的全局异常处理功能,可以将所有处理异常的逻辑集中起来,进而统一处理所有异常,使代码更容易维护。
具体用法如下,详细信息可参考官方文档:
在common模块中创建com.atguigu.lease.common.exception.GlobalExceptionHandler
类,内容如下
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
@ResponseBody
public Result error(Exception e){
e.printStackTrace();
return Result.fail();
}
}
上述代码中的关键注解的作用如下
@ControllerAdvice
用于声明处理全局Controller方法异常的类
@ExceptionHandler
用于声明处理异常的方法,value
属性用于声明该方法处理的异常类型
@ResponseBody
表示将方法的返回值作为HTTP的响应体
注意:
全局异常处理功能由SpringMVC提供,因此需要在common模块的pom.xml
中引入如下依赖
<!--spring-web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
由于前文的GlobalExceptionHandler
会处理所有Controller方法抛出的异常,因此Controller层就无序关注异常的处理逻辑了,因此Controller层代码可做出如下调整。
public Result<String> upload(@RequestParam MultipartFile file) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
String url = service.upload(file);
return Result.ok(url);
}
推荐阅读:
linux yum install报错已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
尚硅谷尚庭公寓
Mybatis-Plus更新策略修改
在SpringMVC中接收枚举类型参数
minIO在windows下设置用户名和密码、固定端口
阿里云短信验证码服务
《尚庭公寓》162集确认租约按钮没反应
SpringBoot定时任务
jkson时间格式设置
SpringBoot方法启动新的线程异步执行的注解
行动消除疑虑