Java异常体系(二)

2014-11-24 08:05:16 · 作者: · 浏览: 1
DAOException daoex=new DAOException("sql exception",e);
异常转译是针对所有继承Throwable超类的类而言的,从 编程语法角度讲,其子类之间都可以相互转换。但是从合理性和系统设计角度考虑,可将异常分为三类:Error、Exception、RuntimeException,合理的转译关系图应该是: \
为什么要这么做呢? 异常的处理存在者一套哲学思想:对于一个应用系统来说,系统所发生的任何异常或者错误对于操作用户来说都是系统“运行时”异常,都是这个应用系统内部的异常。这也是异常转译和应用系统异常框架设计的指导原则。在系统中大量处理非检查异常的负面影响很多,最重要的一个方面就是代码可读性降低,程序编写复杂,异常处理的代码也很苍白无力。因此,很有必要将这些检查异常Exception和错误转换为RuntimeException异常,让程序员根据情况来决定是否捕获和处理所发生的异常。 图中的三条线标识转换的方向,分三种情况: 1.Error到Exception:将错误转换为异常,并继续抛出。例如spring mvc中,将org.springframework.web.servlet.DispatcherServlet的doDispatcher()方法中,将捕获的错误转译成一个NestedServletException异常。这样做的目的是为了最大限度挽回因错误发生带来的负面影响。因为一个Error常常是很严重的错误,可能会引起系统挂起。 2.Exception到RuntimeException:将检查异常转换为RuntimeException可以让程序代码变得更优雅,让开发人员集中精力设计更合理的程序代码,反过来也增加了系统发生异常的可能性。 3.ErrZ http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">
vcrW9UnVudGltZUV4Y2VwdGlvbqO6xL+1xLu5ysfSu9H5oaOw0cv509C1xNLss6O6zbTtzvPXqtLrzqqyu7zssunS7LOjo6zV4tH5v8nS1MjDtPrC67j8zqq88r3go6y7udPQwPvT2rbUtO3O87rN0uyzo9DFz6K1xM2z0ru0psDtoaMKPGJyPgoKPGgzPsnovMbSu7j2uN/Qp7rPwO21xNLss6O0psDtv/K83DwvaDM+CrbU09rSu7j206bTw8+1zbPAtMu1o6y3osn6y/nT0NLss6PU2tPDu6e/tMC0trzKx9Om08PPtc2zxNqyv7XE0uyzo6Gj0vK0y9OmuMPJ6LzG0rvM19Om08PPtc2ztcTS7LOjv/K83KOs0tS0psDtz7XNs9TL0NC5/bPM1tC1xMv509DS7LOjoaMKu/nT2tXi1ta527Xjo6y/ydLUyei8xtK7uPbTptPDz7XNs7XE0uyzo7HIyOe90Nf2QXBwRXhjZXB0aW9uoaOyosfSttTTw7unwLTLtaOs1eLQqdLss6O2vMrH1MvQ0NOm08PPtc2z1MvQ0Mqxt6LJ+rXEo6zS8rTLQXBwRXhjZXB0aW9u06a4w7zMs9BSdW50aW1lRXhjZXB0aW9uo6zV4tH5z7XNs9bQy/nT0LXExuTL+9Lss6O2vNeq0uvOqkFwcEV4Y2VwdGlvbqOstbHS7LOjt6LJ+rXEyrG68qOsx7C2y73TytW1vUFwcEV4Y2VwdGlvbrKi1/bNs9K7tcS0psDtoaMK0uyzo7SmwO2/8rzcyOfNvKO6CjxpbWcgc3JjPQ=="https://www.cppentry.com/upload_files/article/76/1_ksr7q__.jpg" alt="n Ф) ω 横莰ky"http://www.2cto.com/kf/ware/Java/" target="_blank" class="keylink">Java异常处理总结 异常是程序运行过程中出现的错误,在Java中用类来描述,用对象表示具体的异常,Java将其区分为Error和Exception,Error是程序无力处理的错误,Exception是程序可以处理的错误。异常处理是为了程序的健壮性。 Java异常类来自于Java API定义和用户扩展。通过继承Java API异常类可以实现异常的转译。 异常能处理就处理,不能处理就抛出,最终没有处理的异常,JVM会进行处理 异常可以转播,也可以相互转译,但应该根据需要选择合理的异常转译的方向。 对于一个应用 系统,设计一套良好的异常处理体系很重要。这一点在系统设计的时候应该考虑到。