黑马----JAVA异常

时间:2021-04-19 16:47:32

黑马程序员:Java培训、Android培训、iOS培训、.Net培训

黑马程序员--JAVA异常

一、JAVA异常有三种语句块:try语句块、catch语句块、finally语句块。

1、try语句块:在抛出异常后中断执行。

2、catch语句块:在捕获相应异常后执行。

3、finally语句块:始终执行,不管是否有异常。

二、抛出异常的三种形式

1、系统自动抛出异常,例如下面语句

int a = 3, b = 0;

int c = a / b;

2、语句抛出异常:thow 异常对象

用于程序出现某种逻辑时,程序员自动抛出异常等。

if(……){

…….

thow new ExceptionType;

…….

}

3、方法抛出异常:thows 异常类型

用来声明方法抛出某种异常,这种异常该方法不会处理,而是提交给调用该方法的上一级进行处理。

Public int method() throws ExceptionType{

…….

}

三、含有return的执行顺序

(1)有表达式A…..G

(2)每个方法都有唯一一块临时的返回值存储块S。

(3)下面只讨论有异常的执行顺序

1)try{

A;

}catch(){

B;

}finally{

C

}

return D;

//顺序执行A,B,C,D

2)try{

A;

return B;

}catch(){

C;

}finally{

D

}

//执行顺序

A,B,将B的结果存放到S,C,D,try块的return

3)try{

A;

}catch(){

B;

return C;

}finally{

D;

}

//执行顺序

A, B, C, 将C的结果保存到S,D, catch块的return

4)try{

A;

}catch(){

B;

}finally{

return C;

}

//执行顺序

A, B, C, 将C的结果保存到S,finally块的return

5)try{

A;

return B;

}catch(){

C;

return D;

}finally{

E;

}

//执行顺序

A, B, 将B的结果保存到S,C,  D, 将D的结果保存到S,E, catch块的return

6)try{

A;

return B;

}catch(){

C;

}finally{

D;

return E;

}

//执行顺序

A, B, 将B的结果保存到S,C,  D, E, 将E的结果保存到S,finally块的return

7)try{

A;

return B;

}catch(){

C;

return D;

}finally{

E;

return F;

}

//执行顺序

A, B, 将B的结果保存到S,C, D, 将D的结果保存到S, E, F, 将F的结果保存到S, finally块的return

(4) 从上面的执行顺序可看出:catch语句块和finally语句块是在函数返回上一级前执行。同时,如果finally中含有return,则函数不会返回try语句块或catch语句块中保存的返回值,因此,最后finally语句块中最好不使用return。