Java中异常捕获

异常有以下几种:


重点几种:

Error(系统错误):描述的是内部系统出现错误;用户什么也干不了;

Exception(异常):描述的是由程序和外部环境引起的错误,这样的错误能被捕获;

RuntimeException(运行时异常):虽然是异常的子类,但是单独挑出来说明;它描述的是程序设计错误,错误的类型转换,数组越界访问,都会由JVM抛出RuntimeException;

RuntimeException的几种举例:



RuntimeException和Error都是免检异常,它们在运行前,不会被编译器发现;运行过后,会报错;

除免检异常外所有的异常全部是必检异常,他们在运行前会被编译器强制引入trycatch语句;



Java处理异常的三个步骤:

1.声明一个异常(注意这里声明异常是用throws,后面跟的是异常类名,而且声明是放在函数体后面)

2.捕获一个异常;   try{ }catch{ }catch{ }catch{ }可加多个catch; 

3.?抛出一个异常(不一定会用到):当异常处理器无法处理这个异常的时候,或者调用者只是想发现它并不想处理它;

(抛出异常用throw,后面加的是异常对象,往往抛出一个异常是在一个方法体内部);


声明异常


常把异常的名字放在方法的背后,若有多个异常则用逗号分隔;


捕获异常

在try语句中写入可能会出问题的语句,运行时若出了问题则往catch走,没出问题则跳过catch;catch语句中放了出现异常时处理异常的逻辑语句;


来看下面一个例子:


蓝色箭头处数组越界,所以会发生运行是异常;由于这个异常是免检异常,所以声明和捕获这里其实都不需要写;



finally语句:

先看个例子:



①.当try中没有出现异常,会执行finally语句和trycatchfinally语句块(简称tcf语句)后面的语句;

②.当try出现了异常,(例如try中statement2异常,statement3不会执行),并被catch捕获,直接跳到相应catch语句中执行语句,finally和tcf后的语句都会执行

③.当try中出现异常,也是照上面一样,而没有被catch捕获,会只执行finally语句;

④当try中出现异常,也是照上面一样,虽然被catch捕获了,但又被抛出,会只执行finally语句;


最后,finally语句无论如何都会执行,就算trycatch语句中有return,finally也会在return前执行,最后在执行return;

猜你喜欢

转载自blog.csdn.net/emmmsuperdan/article/details/79711476