zoukankan      html  css  js  c++  java
  • 合理的异常分层是怎样的

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

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

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

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

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

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

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

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

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

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

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

     PS:

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

  • 相关阅读:
    网络编程
    WPF DataGrid点击有效区域Check
    WPF DataGrid显示表格中编辑Check数据
    WPF DataGrid显示按上下键移动数据、多个CheckBox勾选
    Python 下载小说到本地
    WPF 条件不等于时触发改变颜色
    WPF 反射 排序 、启动定时器等
    # WPF DataGrid文本编辑验证
    Nginx 与 X-Forwarded-For
    如何正确设置nginx中remote_addr和x_forwarded_for参数
  • 原文地址:https://www.cnblogs.com/jiyuqi/p/3208472.html
Copyright © 2011-2022 走看看