package me.luger.base;public class FinallyReturnTest {
public static void main(String[] args) {
tt();
} // finally中的代码是必须要执行的,而且是在return前执行,除非碰到exit()。
static Return tt() {
try {
return new Return("try");
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("finally");
}
return new Return("outter");
}}class Return {
Return(String name) {
System.out.println("return " + name);
}
}
我在网上看的说是finally在return前执行 但是按我这么写的话是return先执行呀?是不是我理解错了
public static void main(String[] args) {
tt();
} // finally中的代码是必须要执行的,而且是在return前执行,除非碰到exit()。
static Return tt() {
try {
return new Return("try");
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("finally");
}
return new Return("outter");
}}class Return {
Return(String name) {
System.out.println("return " + name);
}
}
我在网上看的说是finally在return前执行 但是按我这么写的话是return先执行呀?是不是我理解错了
解决方案 »
- 请问: public class JLabel extends JComponent implements SwingConstants,Accessible分别是什么意思呀
- 让java桌面程序在任务栏右下脚
- java新手急问!关于JTree
- 请教一个数据库连接问题
- 求助~如何在socket不断的情况下,收发16进制的数据?
- 有谁知道哪里能得到javac的源代码???急切需要!
- 高分求CoreJava卷I中两程序的源代码!
- 如何实现 指定文件夹里的文件向另一指定文件夹的定时自动拷贝 功能??
- 我的设置还是有问题吗?
- 原来char c=70和char c='\u0070'有区别的
- 关于控制每行输出个数的问题
- 请教一个线程的问题
public class Test { /**
* @param args
*/
public static void main(String[] args) {
System.out.println(getString()); }
static String getString(){
try{
return "SUCCESS";
}catch(Exception e){
}finally{
System.out.println("Finally is executing");
return "ERROR";//如果这句放在finally之外呢?
}
}
}控制台打印的是:
Finally executing
ERROR
当函数执行finally时,返回的"ERROR"覆盖了前面的"SUCCESS",但是如果将return "ERROR"
移到finally之外,那么函数最后返回的也就是"SUCCESS"了。相应的,控制台打印的也就是:
Finally executing
SUCCESS
return try
finally