JAVA中的异常处理(上)
1.意外产生的处理过程概述
运行时有许多因素引起出错,硬件失败,除法溢出,数组下标越界。
出错的位置都在方法Method里
出错后方法生成一个Exception对象,并把它交给JVM。这个对象里包括许多信息:错误类型,错误位置。JVM负责
处理Exception对象
这种生成Exception对象并交给系统的过程叫抛出意外throwing an exception
一个方法抛出意外后,JVM就试图在“调用栈”里找能处理这个类型Exception对象的方法。找到就执行,找不到程序中止。
2.出错的处理方式
以前正常流程代码和问题处理代码相结合。现在将正常流程代码和问题处理代码分离,以提高阅读性。
异常就是Java通过面向对象的思想将程序中的问题封装成了对象,用异常类对其进行描述。
(1)不同的问题用不同的类进行具体的描述。
(2)问题很多,意味着描述的类也很多,将其共性进行向上抽取就形成了异常体系。
3.异常
Java异常是Java提供的用于处理程序中错误的一种机制
(1)所谓错误是指在程序运行的过程中发生的一些异常事件。如除0溢出、数组下标越界、所需要读取的文件不存在;
(2)设计良好的程序应该在异常发生时提供处理这些错误,使得程序不会因为异常的发生而阻断或者产生不可预见的结果
(3)Java程序的执行过程中如果出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并经
被提交给Java运行时系统,这个过程称为抛出异常throw
(4)当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这个过程称为捕获异常
Java异常处理的关键字有throws、throw、try、catch、Õnally共5个关键字
4.异常用途
异常就是在程序运行时由代码所产生的不正常状态。换句话说,异常就是一个运行时不支持异常处理的计算机语言中,错误必须被人工进行检查和处理,这显然麻烦而低效
Java语言提供了异常处理机制,为方法的异常终止和出错处理提供了清楚的接口
(1)用来在发生运行异常时告诉程序如何控制自身的运行,以防止错误的进一步恶化;
(2)每个方法必须对他可能抛出的异常进行预先声明,在定义方法时,必须声明这个方法可能会抛出哪一种或几种异常。
5.JAVA异常可以分为三大类
所有异常对象的父类为Throwable—Object
(1)Error及其子类:错误,一般指的是虚拟机的错误,是由Java虚拟机生成并抛出,程序不能进行处理所以也不加处理。
(2)RuntimeException及其子类:运行时异常(非受检型异常),是由于编程bug所导致,希望越早发现越好,所以不进行处理,直接中断报错即可,编程人员针对报错信息修改程序bug来解决问题。
3、Exception及其子类中除RuntimeException及其子类之外的其它异常:受检型异常(非运行时异常),这类异常属于明知道可能出现,但是没有办法杜绝的异常。这类异常一般采用try/catch或者throws声明抛出的方式进行异常处理,当程序出现了非正常情况,尽量保证程序正常结果,而不是立即中断。
(1)受检型异常:明知道存在这种异常的可能,但是没有办法杜绝,所以必须进行编码异常处理
(2)非受检型异常:这种异常不需要进行处理,发现的越早越好。
Throwable类是java异常类型的顶层父类,一个对象只有是Throwable类的实例,他才是一个异常对象,才能被异常处理机制识别。