黑马程序员: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。