Java 服务器项目风格推荐 - 统一异常处理

1.介绍

统一的异常处理有两方面的作用,第一是帮助我们将异常保存,以便后续处理,另一方面,同意一场处理是作为响应的一部分,快速的响应给用户处理结果

2.使用

我是用的是 SpringBoot 框架,框架自带了异常处理的方法,我只需要添加自己的异常处理函数就行,同时,配合上一章介绍的统一响应是异常处理更加完善。

@ControllerAdvice
public class ExceptionControllerAdvice {
    /**
     * 捕获参数异常
     *
     * @param e        异常请求
     * @param request  请求信息
     * @param response 响应信息
     * @return 封装后的响应异常信息
     */
    @ExceptionHandler({IllegalArgumentException.class})
    @ResponseBody
    public JsonResponse illegalArgumentExceptionHandler(Exception e, HttpServletRequest request, HttpServletResponse response) {//, RedirectAttributes attributes){
        //todo 保存异常
        String message = e.getMessage();
        if (message == null || message.length() > 200) {
            message = "参数异常";
        }
        return Result.of(ResponseCodeConstant.ERROR_CODE_BUSINESS_EXCEPTION, message);
    }
    /**
     * 其他时异常
     *
     * @param e        异常请求
     * @param request  请求信息
     * @param response 响应信息
     * @return 封装后的响应异常信息
     */
    @ExceptionHandler({Exception.class})
    @ResponseBody
    public Result exceptionHandler(Exception e, HttpServletRequest request, HttpServletResponse response) {
         //todo 保存异常
        return Result.of(ResponseStatus.INTERNAL_SERVER_ERROR);
    }
}

@ControllerAdvice 是 Spring 自带的注解,可以将@InitBinder @ModelAttribute 和@ExceptionHandler 定义的函数应用到所有的@RequeMapping 中(@GetMapping 等都可以),@InitBinder @ModelAttribute 的方法可以自行探索,这里主要使用@ExceptionHandler 来做异常处理。

@ExceptionHandler 可以传入一个异常数组,当@RequeMapping 方法抛出了该数组中的异常时,执行该异常处理函数,需要注意的是,你可以定义多个异常处理函数,抛出异常时,从上到下一次匹配,匹配到后就执行函数,不再往下匹配,所以在编写异常处理函数的时候,范围大的异常写下面,最后最好添加一个 Exception 异常,可以处理没匹配到的异常

作者:suruns
链接:http://pipe.suruns.com/blogs/suruns/articles/2019/06/03/1559532092653
来源:Pipe
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文地址:https://www.cnblogs.com/suruns/p/12174588.html

时间: 2024-10-16 15:19:10

Java 服务器项目风格推荐 - 统一异常处理的相关文章

SpringBoot项目如何做到统一异常处理

在项目中,难免会出现各种各样的异常,我们希望异常信息尽可能详细,包括响应状态码,响应的字符串异常信息,甚至操作时间等等,这样可以方便地快速定位到发生异常的位置.所以,一个项目中对于异常的处理就显得尤为重要.那么,小编就以SpringBoot框架,通过代码实例展示统一异常的处理方式. 1.首先我们简单搭建一个SpringBoot框架的项目,项目名称是exceptionhandler(异常处理) 2.导入相关依赖 导入lombok依赖,提供@getter注解 导入日期工具类JodaTime,提供Da

spring boot 2 全局统一返回RESTful风格数据、统一异常处理

全局统一返回RESTful风格数据,主要是实现ResponseBodyAdvice接口的方法,对返回值在输出之前进行修改.使用注解@RestControllerAdvice拦截异常并统一处理. 开发环境:IntelliJ IDEA 2019.2.2jdk1.8Spring Boot 2.2.2 1.创建一个SpringBoot项目,pom.xml引用的依赖包如下 <dependency> <groupId>org.springframework.boot</groupId&g

011医疗项目-模块一:统一异常处理

010中提到了serivce层抛出异常,然后由Action层去捕获异常去处理,之前的写法是很繁琐的,所以我们这里统一异常处理. Java中进行异常处理: 一类是可预知的异常,程序员在编码时,主动抛出的异常,为了给用户操作提示,提前检查代码中可能存在异常. 通过开发中,采用自定义的异常类,每个异常类表示每一类异常信息.类需要继承Exception类. 本系统采用统一异常类,提供一个属性标识异常类. 另一类是不可预知异常,就是runtimeException异常,通过提高代码编写质量来避免此类异常,

项目总结(二、统一异常处理)

二.统一异常处理 我们知道项目如果采用分层结构的话,异常需要一层层往上抛,直至到action层,然后在action处理异常,提示友好的异常信息给用户.如果在action的每个方法中都用try{}catch处理,那么类似的代码会很多,且如果需要在异常处理时新增一些逻辑,则需要更改的地方很多,工作量大,不易于维护.于是项目打算采用struts的拦截器机制,实现统一异常处理. 1.struts配置文件 首先自定义拦截器栈,配置如下: <!-- 自定义拦截器栈 --> <interceptors

全网最详细的Eclipse和MyEclipse里对于Java web项目发布到Tomcat上运行成功的对比事宜【博主强烈推荐】【适合普通的还是Maven方式创建的】(图文详解)

不多说,直接上干货! 首先,大家要明确,IDEA.Eclipse和MyEclipse等编辑器之间的新建和运行手法是不一样的. 全网最详细的Eclipse里如何正确新建普通的Java web项目并发布到Tomcat上运行成功[博主强烈推荐](图文详解) Eclipse是 或者 MyEclipse是 由 变成 即,只有所框的部分过去了.并且自动改名为dat08. 用MyEclipse里自带的Web Browser检测: 用第三方安装的浏览器检测: 欢迎大家,加入我的微信公众号:大数据躺过的坑   

阿里云服务器部署Java Web项目全过程

最近需要将一个Java Web项目部署到服务器上,方便多人共享访问.这也是我第一次接触服务器之类的东西,也花了一点时间,最终总算部署成功,写下一篇文章记录以便日后回顾. 购买服务器 第一步当然是需要购买一台服务器了,我选择的是阿里云的ECS,对于新用户有一定的优惠活动.服务器徐购好后可以在管理控制台下看到自己服务器的配置情况.我买的是centos7 1核2G的,详情如下: 本地主机连接服务器 购买了服务器之后,下一步当时是要远程操作服务器,所以需要和远程服务器建立连接.这里有两种方式:一种是使用

如何将Java Web项目部署到服务器上

项目部署 我们对于 Java Web 项目在本地机器(无论是 Windows 还是 Linux)上的部署已经了然于心了,那么对于在云服务器上部署 Java Web 项目又是如何操作的呢? 其实很简单,还是离不开 Web 项目部署的那三点:① 基础的 JDK 环境② 一个 Web 服务器.如 Tomcat.JBoss③ 一款数据库.如:mysql 对于云服务器上 Java Web 项目的部署,和平时在 Windows.Linux 下部署是一样的.最多也就是只能使用纯命令模式来操作而已,其实过程都一

linux服务器上部署java Web项目

一.安装jdk 1) 首先卸载openJDK,安装sun公司的jdk: 打开linux服务器,命令如下: ssh 用户名@ip地址 查看当前已安装的安装java相关的软件,命令如下: 说明:grep这个命令在这里相当于sql里面的where,起过滤的作用. 删除openJDK,命令如下,删除完了之后,然后按向上方向键,查看是否都已经删除完毕. 2)安装JDK,创建JDK安装路径( /usr/local/ ),并在路径下建java文件夹. 16分51秒视频 说明:yum和wget分别是两个常用的命

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验. 1.说一说Servlet生命周期(非常重要) Servlet生命周期包括三部分: 初始化:Web容器加载servlet,调用init()方法 只执行一次 处理请求:当请求到达时,运行其service()方法.service()自动调用与请求相对应的doXXX