public class Test {
public static void main(String[] args) {
System.out.println(test());
}
public static int test(){
int i=100;
try {
int b=100/0;
} catch (Exception e) {
e.printStackTrace();
return i;
}finally{
i++;
}
return 0;
}
}为什么打印出的结果是100?不是101吗?BufferedOutputStream bos=
   new BufferedOutputStream(
      new FileOutputStream("file.date"));
bos.write(100);
假设file.dat不存在,运行该程序之后,文件file.dat的字节数为0,为什么?
求指教!JavaIO异常

解决方案 »

  1.   

    你第二个问题 很简单啊 你当时还在缓存里 你没有fulsh或者close  你缓存中的东西还没写入文件 文件只是被创建了而已 当然是0字节了
      

  2.   

    你如果在 catch语句中 return ++i;则打印101
    1、finally是在 return 表达式运算后前执行的,所以函数返回值是在finally执行前确定的2 i++与++i的区别
      ++i才先计算
      

  3.   

    第一题,执行try后,int b=100/0;会抛出异常,
    然后执行catch,返回i.
    虽然finally最后会执行i++;但是因为i在此之前已经被返回了,
    所以i++的值是101,但没有被返回。返回的是100
      

  4.   

    第一个问题:
    try catch finally执行顺序
    1、不管有木有出现异常,finally块中代码都会执行;2、当try和catch中有return时,finally仍会执行;3、finally是在return表达式运算后执行的,所以函数返回值是在finally执行前确定的;4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。第二个问题:
    就是没清缓存,close()前加个flush()就好了