美文网首页
Java程序中异常的使用

Java程序中异常的使用

作者: 無式 | 来源:发表于2017-08-26 19:00 被阅读0次
    • 在Java中如何使用好Exception是门艺术。
    • 一般我们常见的有checked异常(Exception)和unchecked异常(RuntimeException),区别在于前者在语法层面强制开发者对异常进行处理,后者则不用。
    • 两种异常的好坏或和使用方式大多还是根据场景而定。

    一个现状

    • 目前接手了一个项目,此项目定位为基础组件,对外部系统提供REST API服务和对应SDK。
    • 其中SDK的大致逻辑为:
    //调用rest api
    public Result submit(Object args){
      Result result;
      Request req = createRequest(args);  //构造rest请求
      try{
        result = doRestRequest(req);    //请求http
      }
      catch(Exception e){
        result = new Result();
        result.code = -1;  //发生异常时设置结果码为失败
      }
      return result;
    }
    
    • 逻辑上没有问题,调用失败的场景通过Result.code告诉给使用者。
    • 从现在分布式微服务应用角度看,远程调用发生错误应该要被认为是一种常态,开发者必须关心发生错误的场景。
    • 这样的SDK封装往往会让使用方就会忽略错误的场景,直接提交本地事务完成请求,最终造成业务方与基础组件中的数据状态不一致。

    改进

    • 这种问题发生太多次了,每次都得事后手动处理。所以在下个版本的SDK中,打算使用Exception进行改造。
    //调用rest api
    public Result submit(Object args) throws Exception{
      Request req = createRequest(args);  //构造rest请求
      try{
        return doRestRequest(req);    //请求http
      }
      catch(Exception e){
        throw new Exception(e);    //此处可以对异常做一个封装
      }
    }
    
    • 这样至少在代码层面上提示使用方必须处理错误的场景,进行数据回滚和在界面上进行提示。

    相关文章

      网友评论

          本文标题:Java程序中异常的使用

          本文链接:https://www.haomeiwen.com/subject/cpqvdxtx.html