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

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

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

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

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

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

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

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

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

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

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

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

     PS:

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

  • 相关阅读:
    ScrollView下嵌套GridView或ListView默认不在顶部的解决方法
    Hdu5303 Delicious Apples 贪心
    javax.xml.transform.TransformerConfigurationException: Could not compile stylesheet
    unable to execute dex: multiple dex files Cocos2dxAccelerometer
    Unity游戏小地图生成
    LeetCode Spiral Matrix II
    <九度 OJ>题目1012:畅通project
    cpu信息
    挖一挖不经常使用到而又非常有用的重载-Split
    hdu1501 Zipper--DFS
  • 原文地址:https://www.cnblogs.com/jiyuqi/p/3208472.html
Copyright © 2011-2022 走看看