public static void main(String[] args) {
System.out.println(val());
}
public static int val() {
int num = 5;
try {
num = num / 0;
} catch (Exception e) {
num = 10;
} finally {
num = 15;
}
return num;
} public static void main(String[] args) {
System.out.println(val());
}
public static int val() {
int num = 5;
try {
num = num / 0;
} catch (Exception e) {
num = 10;
} finally {
num = 15;
}
return num;
} 运行时报错
程序正常运行,输出值为5
程序正常运行,输出值为10
程序正常运行,输出值为15
源代码:捕获到除零异常,程序可以继续向下执行。
public static void main(String[] args) {
System.out.println(val());
}
public static int val() {
int num = 5;
try {
num = num / 0;
} catch (Exception e) {
//e.printStackTrace();
num = 10;
} finally {
num = 15;
}
return num;
}
/**
* 情况1: try{} catch(){}finally{} return;
* 显然程序按顺序执行。
* @return 15
*/
public static int val1() {
int num = 5;
try {
num = num / 0;
} catch (Exception e) {
num = 10;
} finally {
num = 15;
}
return num;
}
/**
* 情况2: try{ return; }catch(){} finally{} return;
* 先执行try块中return 语句(包括return语句中的表达式运算),但不返回;
* 执行finally语句中全部代码
* 最后执行try中return 返回
* 显然程序按顺序执行。
* @return 5
*/
public static int val2() {
int num = 5;
try {
return num;
} catch (Exception e) {
num = 10;
} finally {
num = 15;
}
return num;
}
/**
* 情况3: try{ } catch(){return;} finally{} return;
* 执行catch中return语句,但不返回
* 执行finally语句中全部代码,
* 最后执行catch块中return返回。 finally块后的return语句不再执行
* @return 10
*/
public static int val3() {
int num = 5;
try {
num = num / 0;
} catch (Exception e) {
return num = 10; //执行finally后再返回自己
} finally {
num = 15; //会执行
}
return num;
}
/**
* 情况4: try{ return; }catch(){} finally{return;}
* 执行try块return语句(包括return语句中的表达式运算),但不返回;
* 再执行finally块,
* 执行finally块,有return,从这里返回。
* @return 15
*/
public static int val4() {
int num = 5;
try {
return num = 8;
} catch (Exception e) {
num = 10;
} finally {
return num = 15;
}
}
/**
* 情况5: try{} catch(){return;}finally{return;}
* 程序执行catch块中return语句(包括return语句中的表达式运算),但不返回;
* 再执行finally块,
* 执行finally块,有return,从这里返回。
* @return 15
*/
public static int val5() {
int num = 5;
try {
num =num/0;
} catch (Exception e) {
return num = 10;
} finally {
return num = 15;
}
}
/**
* 情况6:同上 try{ return;}catch(){return;} finally{return;}
* 有异常:
*
* 执行catch块中return语句(包括return语句中的表达式运算),但不返回;
* 再执行finally块
* 执行finally块,有return,从这里返回。
* 无异常:
*
* 再执行finally块
*
* 执行finally块,有return,从这里返回。。
* @return
*/