• 写在开始前---web异常处理


    分层项目中,有上层调用下层,每一层都可能出错,比如数据库连接,文件读写等异常。除了运行时程序的异常,还有业务逻辑的一些问题。发生异常需要做一定处理,既要让开发人员便于排查问题,又要让用户看到友好又便于理解的信息。

    对于底层连接数据库,操作数据库的数据层,异常捕捉后,可以记录日志,日志可以是当前文件,行号,sql语句,参数,错误的详情等。然后再往上层抛异常,在控制器层捕捉,判断后返回给用户客户端恰当的便于理解的错误信息。这个信息是根据业务模块功能具体来确定的。比如用户模块的新增功能,当用户名重复的时候,可以提示‘用户名已存在’,比‘操作失败,请重试’要直观,当然这是业务逻辑的异常,程序异常也类似。

    通常可以自定义自己的异常类型,作为底层的异常抛到上层去。上层可以集中配置一个异常信息对照表,或错误码表,根据返回的异常,查找对应的用户提示信息,并返回。

    常见的控制层代码段如下:

    try{

       //model();

    }catch(Exception e){

      //print();

      //log('文件-行号-异常信息');

          //return '根据e的类型,返回用户友好的信息提示';

    }

    每个controller都有类似的代码,所以可以把这个处理逻辑搬到拦截器或者调度器里,然后根据异常类型或异常错误号,再对应集中返回信息。

    至于log记录,则根据情况来分析,实际业务访问量,系统规模架构等都有很大影响。一般是记录在文件,队列,日志型数据库等。

    层层抛出、上层捕捉、详情记录、友好返回、异常信息对照表、显示友好的出错界面、回滚操作、记录日志、通知管理员

  • 相关阅读:
    ureport2 数据源配置
    ureport2 + spring boot 搭建
    alibaba
    Maven Helper
    在Idea中连接数据库并生成实体类
    Intellij jrebel 热部署 安装
    IDEA使用说明
    JPA 常用注解 (hibernate)
    vue + canvas 图片加水印
    vue——批量下载图片
  • 原文地址:https://www.cnblogs.com/thingk/p/10174981.html
走看看 - 开发者的网上家园