对于java异常。想从两个方面谈论。
一。首先要熟悉java的异常处理,了解它的体系结构。
二。通过面向对象的思想,用现实面向对象去理解异常的一些内容。
1。error和exception的区别。
java异常都是实现Throwable的。往下分为error和exception.
两个的区别在于问题的严重程度。error是致命的,严重的,会影响系统的运行,举例来说,一个高PV的网站,他的数据库链接很少。高访问量超过网站的最大的承载压力。系统无法正常运行,最后挂掉。这就是error。再用面向对象来举例,就好比我有一输车,我在沙漠中,车没了,我是一点招也没有,巧妇难为无米之炊,谁也解决不了。问题很严重了。我无法走出沙漠,系统无法继续运行。
exception是一些异常,不是致命的。就好比电力公司,一台机票坏掉了并不影响给提供电力,有问题并不影响系统运行。
2。运行时的异常和非运行时的异常
exception又可以细分为运行时的异常和非运行时的异常。
运行时的异常:RuntimeExcetion 本身以及其子类称为运行的系统。当然RuntimeExcetion 也是继承Exception的。
非运行的异常:Exception本身以及除了RuntimeExcetion 以外,Exception的其他子类称为非运行时的异常。
有什么区别呢?
在编译上,如果方法抛出运行时的异常,调用查必须捕获。在IED中会有错误提示消息。而非运行时的异常不需要调用者进行处理。
运行时的异常是可以预料到的,而非运行时的异常是不可以预期的。
3。异常之间的转换
实现Throwable的类,彼此之间都可以进行转换。代码如下:
public class DAOException extends RuntimeException {
public DAOException(String message, Throwable cause) {
super(message, cause);
}
}
按上面总结的,Throwable大体分为error和exception,进行又可以细分为三类。
error,运行时的异常,非运行时的异常。
实现Throwable的类又是可以彼此之间进行转换,我们如何转换呢。一般分三种情况。
error转成Exception,error转成RuntimeException 还有 Exception转成RuntimeException.
在实际生产活动中。即使发了很大的错误,很致命的错误,也要让系统运行下去,碰到了error,系统也要运转。而且有些error我们也是可以进行处理的,没有必须让系统停下来。这样我们把他做成普通的异常进行处理。
Exception到RuntimeException:将检查异常转换为RuntimeException可以让程序代码变得更优雅,让开发人员集中经理设计更合理的程序代码,反过来也增加了系统发生异常的可能性。
Error到RuntimeException:目的还是一样的。把所有的异常和错误转译为不检查异常,这样可以让代码更为简洁,还有利于对错误和异常信息的统一处理。
其实代码中有大量的处理异常的代码,确实影响代码的可读性,处理异常的代码往往是和业务不相关的。
那在我们的系统中是用什么进行处理呢?是Exception还是RuntimeException呢/
这个不好说。我们可以用面向对象的思想来思考这个问题。
我从你那买了一辆车,我很高兴,周末开车出去,车突然没油了。我不高兴,找你去理论(看来我是很不讲理的),可能像我这种人太多了,汽车代理商受不了。为了避免以后的究分,在开车这个方法中抛出一个异常,告诉可能会发生车没有汽油这个异常。开车的人想要开车,必须要处理这个异常。问题看似解决了,但还有一些人,他们不喜欢默迹,就想开车,不想管不管什么异常,有异常的时候再说,车没汽油的时候再说,他们不想事前处理这些东西。他们不想处理非运行时的异常。
所以用Exception还是RuntimeException,不同的人是有不同的想法的。
但无论哪种,都应该根据实际业务,分段的,集中起来进行处理。
具体选用哪个异常还应该根据你自己对业务的理解来定。
最后来看一下Spring是选用什么来处理的异常的吧。
Spring中的所有异常都可以用org.springframework.core.NestedRuntimeException来表示,并且该基类继承的是RuntimeException
分享到:
相关推荐
深入理解java异常处理机制,很详细的,去了,你们的!
JDK1.7以上的异常体系,需要后续的不断总结和完善,学习jdk必备!
深入理解java异常处理机制Java开发Java经验技巧共19页.pdf.zip
java异常处理的学习PPT,学习讲的不是很透彻,望理解。
深入理解java异常(异常中的Error+异常中的Exception+检查异常+运行时异常+异常处理+throws关键字等)
这些问题旨在考察候选人对Java异常处理的理解和应用能力。通过阅读本文,您将能够深入了解Java异常处理的原理、使用方法以及异常处理的最佳实践。不论您是准备面试还是希望加强对Java异常处理的知识掌握
深入理解Java异常体系Java系列2021.pdf
对java异常的工作过程进行详细解释,让初学者更好的掌握异常处理机制
Java异常处理是编写健壮程序的关键方面之一。本资料将帮助您了解异常类层次结构、异常处理、抛出异常、自定义异常和最佳实践。 在Java中,异常被分为受检异常和非受检异常。受检异常需要在编译时进行处理,而非受检...
Java异常处理的方法和几个例子源码,帮助你理解异常类型、声明异常、抛出和捕获异常、从异常获取信息、创建自定义异常等。
深刻理解 java 语言中独特的异常处理机制,掌握处理问题的方法。异常处理是java语言中一个独特之处,主要使用捕获异常和声明抛弃异常两种方法来处理程序中可能出现异常的语句块。
适合java初学者对java异常这一块的理解,加深对异常描述的印象
java自定义异常类之用户登录,帮助大家更好的理解之定义异常。
里面讲述了 java 异常体系,简介,及流程,可以让你对异常更加理解
比较能够容易理解java的异常类的文档,适用于初学者学习,可以初步对异常类有一个比较笼统的认识
java基础异常学习ppt 学完本次课程后,你能够 了解异常概念 理解Java异常处理机制 会捕捉异常 会抛出异常 了解Java异常体系结构
设计一个简单的文本编辑器,可以实现多文件处理、实现文件的创建、浏览、编辑(允许文件复制和修改)、对已经修改的文件可以进行保存或以另存的文件名称保存。.
仔细阅读本章各知识点的内容, 深刻理解 java 语言中异常处理机制,掌握处理问题的方法,多练习,多上机。
帮助大家复习java基础知识其中有 hashCode 2 toString 2 finalize 2 用已学知识做出简单的房屋出租系统 3 类方法使用注意事项和细节讨论 4 main()方法 4 代码块 4 代码块使用注意事项和细节 5 单例模式 6 final...
(网上找的,这个写的比较好,拿出来和大家共享一下)try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是...