以下是演示我的观点(java)的代码:
public static int getSize(List<String> list)
{
System.out.println("begin");
try
{
System.out.println("get list size");
return list.size();
}
catch (Exception e)
{
System.err.println("exception");
}
finally
{
System.out.println("finally");
return -1;
}
}
public static void main(String[] args)
{
List<String> list = null;
int size = getSize(list);
System.out.println("list size: " + size);
}
我期待输出:
begin
get list size
exception
finally
list size: -1
相反,我得到其他东西和上面的那个...就像异常可以在获取列表大小之前和异常之后显示...
e.g。
begin exception get list size finally list size: -1
和
begin get list size finally exception list size: -1
为什么这样做?什么是正确的输出?
答案 0 :(得分:5)
System.out和System.err是不同的流。 当strem flush时显示测试。由于它们不同,您无法确定每次冲洗何时发生。 尝试在System.out中显示异常并查看差异。