黑马程序员技术交流社区
标题:
JAVA基础-异常处理问题
[打印本页]
作者:
王艳静
时间:
2015-8-12 21:51
标题:
JAVA基础-异常处理问题
package com.itheima;
/**
* 8、 用代码证明,在try中写了return,后面又写了finally,是先执行return还是先执行fianlly?
* @author 王艳静
*/
public class Test08 {
public static void main(String[] args) {
System.out.println(method());
}
public static String method(){
try{
String str = "我是return。";//被检测代码块
return str;
}finally{
String str = "我是finally。";
System.out.println(str);//必须执行代码块
}
}
}
复制代码
上面是我的基础测试题的代码。运行结果是:
我是finally。 我是return。
由结果得就是finally先于try中的return执行。
我的疑惑是:
return返回的值输出在控制台是决定于main函数中的输出语句。所以不能得出finally优先于return执行。
我没有想到更好的方法,请大家指教。
作者:
Queen_one
时间:
2015-8-12 21:52
诶诶诶 这个好像在哪里见过…
作者:
王艳静
时间:
2015-8-12 21:56
Queen_one 发表于 2015-8-12 21:52
诶诶诶 这个好像在哪里见过…
没有吧
作者:
kime
时间:
2015-8-12 22:23
等finally语句执行完了再返回结果
作者:
端详眼
时间:
2015-8-12 22:51
继续加油
作者:
王艳静
时间:
2015-8-13 10:26
本帖最后由 王艳静 于 2015-8-13 10:28 编辑
package com.itheima;
/**
* 8、 用代码证明,在try中写了return,后面又写了finally,是先执行return还是先执行fianlly?
* @author 王艳静
*/
public class Test08 {
public static void main(String[] args) {
System.out.println(method());
}
@SuppressWarnings("finally")
public static String method(){
try{
System.out.println("try语句正在执行。");//被检测代码块
return "我是try语句中的return。";
}finally{
System.out.println("fanally语句正在执行。");
return "我是fanally语句中的return。";//必须执行代码块
}
}
}
/*
* 分析:
* 为避免主函数中语句的影响,所以在fanally代码块中也写入了return语句。
* 主函数中输出什么哪条语句就说明哪个代码块中的return语句先执行。
* 运行结果为:
* try语句正在执行。
* fanally语句正在执行。
* 我是fanally语句中的return。
* 说明:finally优先于try中的return执行。
*
* */
复制代码
作者:
王艳静
时间:
2015-8-13 10:29
王艳静 发表于 2015-8-13 10:26
这是修改后的代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2