今天写一个导出的功能,想导出成功或失败的话向前台传递一些说明或通知什么的,在try catch finally 的使用时将关流放在了finally中,但是程序出现了错误,原因是:当你执行关流时,会将缓存清空,response的值在缓冲区中存放,从缓冲区中取response传给客户端是会报错。
今天用到了try catch finally 就测试一下,
package com.ftl824;
public class Test {
public static void main(String[] args) {
Test test=new Test();
int a=test.tryca();
System.out.println(a);
}
public int tryca(){
try {
System.out.println(1.1);
return 1;
} catch (Exception e) {
// TODO: handle exception
System.out.println(2.2);
return 2;
}finally {
System.out.println(3.3);
return 3;
}
}
}
输出:
finally里的代码肯定会执行,但是finally里的代码会在try或者catch里的return之前执行,如果finally里有跳出程序的代码,则try或者catch里的return就不再执行了。