日期:2014-05-20  浏览次数:20740 次

两到基础题,有点忘了,求指教。

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,为什么?
求指教!
Java IO 异常

------解决方案--------------------
你第二个问题 很简单啊 你当时还在缓存里 你没有fulsh或者close  你缓存中的东西还没写入文件 文件只是被创建了而已 当然是0字节了
------解决方案--------------------
第一题,执行try后,int b=100/0;会抛出异常,
然后执行catch,返回i.
虽然finally最后会执行i++;但是因为i在此之前已经被返回了,
所以i++的值是101,但没有被返回。返回的是100
------解决方案--------------------
第一个问题:
try catch finally

执行顺序
1、不管有木有出现异常,finally块中代码都会执行;

2、当try和catch中有return时,finally仍会执行;

3、finally是在return表达式运算后执行的,所以函数返回值是在finally执行前确定的;

4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。

第二个问题:
就是没清缓存,close()前加个flush()就好了