• 合理的异常分层是怎样的


    异常处理的重要性已经无需再提了,也是JAVA不同于C++的非常重要的地方,我们使用异常来标明函数执行结果,而不再使用单纯的返回值形式处理。这样带来了几个显而易见的好处:

    1. JAVA的异常处理可以通过框架提供,从而保证异常处理的一致性

      在项目开始搭建开发框架时,就应该提前进行设计,并将异常处理灌输给开发人员,并定时监督异常处理在正常轨道。

    2. JAVA的异常处理为分层处理提供了技术基础

        不同的开发层次可以抛出不同的异常,拿简单的三层开发模型来说,如DAO层异常(SQL异常,数据库连接池异常,MYBATIS异常等);service层异常,封装DAO层异常,并加入业务异常;Portal层对业务异常进行捕获并处理。

      当然有人说我整个系统部分层次抛出同一种异常难道不可以么?当然可以,关键是我们既然提高了分层,就不希望存过多的异常越界从而破坏了层次之间的封装性,合理的处理应该是上层仅看到下层的异常。但这在实际的开发中是很难实现的,开发人员总是想将麻烦交给上层处理,美其名曰:透传。

      从工作量上来讲,在不同层次捕获并封装成上层的异常看似增加了工作量,但从框架明晰的角度上来讲,我认为还是值得的。

      对于运行时异常不再赘述,起始是我也不知道应该如何处理。

    3. 采用异常处理可以更加明晰的处理异常

      这部分主要是与C++做的比对,异常可以继承,异常名字可以表意,异常可以捕获,可以重新构造,这将从前分离的异常处理改为横向切片,提高了异常处理的规范性(灵活性其实也得到了保留)。

      在JAVA的高级特性中,甚至可以使用AOP等对异常进行处理。

     PS:

    在现在进行的项目中,框架仅仅定义了一种运行时异常,用于整个项目处理,按照异常的分类,能够恢复的异常定义为检查型异常,不能恢复的异常定位运行时异常,这样来看,这种异常设计肯定是不合理的。

  • 相关阅读:
    新建txt文件新增内容并打印出
    使用 universalimageloader 缓存图片的配置类及使用方法
    Android 一个Activity 里面放置多个 Fragment 实现点击切换的Tab 页面效果
    Vuejs学习笔记(一)
    opencv3 学习笔记(二)
    opencv3 学习笔记(一)
    python 3.6 + numpy + matplotlib + opencv + scipy 安装
    MUI + Spring MVC 实现多图片上传
    maven 构建spring boot + mysql 的基础项目
    Git 基本命令行操作
  • 原文地址:https://www.cnblogs.com/jiyuqi/p/3208472.html
Copyright © 2020-2023  润新知