【发布时间】:2016-02-22 07:03:09
【问题描述】:
最后一个例子
public class FinallyExample {
public static void main(String[] args) {
new FinallyExample().dothework();
}
public void dothework()
{
Object o=null;
for(int i=0;i<=4;i++)
{
System.out.println(" "+i);
try{ o=makeObj(i);}catch(IllegalArgumentException e){System.err.println("Error: ("+e.getMessage()+").");}
finally{System.err.println("All done");
/*if(o==null)
{
System.exit(0);
}*/
}
System.out.println(o);
}
}
public Object makeObj(int type) throws IllegalArgumentException
{
if(type==1) throw new IllegalArgumentException ("Don't like type"+type);
return null;
}
}
输出的顺序总是不同的!
我正在使用eclipse。
O/P- 全部做完 错误:(不喜欢 type1)。 0 //当 i=1 时打印该行 空值 1
全部完成 空值 2 全部做完 空值 3 全部做完 空值 4 全部做完 空
O/P- 0 全部完成null 1
错误:(不喜欢 type1)。 全部做完 空值 2 全部做完 空值 3 全部做完 空值 4 全部做完 空
【问题讨论】:
-
程序中只有一个线程在工作!
-
在 Stack Overflow 上发布时,请统一格式化您的代码。现在到处都是。同时显示输出示例。
-
问题可能与std-out和std-err被缓存/刷新的方式有关
标签: java methods try-catch-finally finally