What will be output if you try to compile and run the following code, but there is no file called Hello.txt in the current directory?
import java.io.*;
public class Test
{
public static void main(String argv[])
{
Test t = new Test();
System.out.println(t.myMethod());
}
public int myMethod()
{
try
{
FileInputStream dis = new FileInputStream("Hello.txt");
}
catch (FileNotFoundException fne)
{
System.out.println("No such file found");
return -1;
}
catch(IOException ioe)
{
}
finally
{
System.out.println("Doing finally");
}
return 0;
}
}
结果为什么会是:No such file found, Doing finally, -1。。
这个-1是怎么回事?
[此贴子已经被作者于2006-9-6 14:51:42编辑过]
----------------解决方案--------------------------------------------------------
我觉的是由于,调用myMethod函数时,反回值是int型的,所以打印出来了吧.抛出的是catch (FileNotFoundException fne)
{
System.out.println("No such file found");
return -1;
}
这个异常
----------------解决方案--------------------------------------------------------
我认为是
首先你在调用myMethod方法时,在你的方法内首先调用myMethod的println()方法,最后返回-1!
----------------解决方案--------------------------------------------------------
楼上两位说的有点理,可是如果把return -1这一句注释掉,就会得到0 那为什么不注释掉不是的呢?
也就是说return -1把return 0给屏必了,这个怎么解释。。。
----------------解决方案--------------------------------------------------------
return 0; 这段代码根本没有被执行,所以没打出来.程序在执行完finally中的代码后就结束了.不会执行它后边的代码的!
----------------解决方案--------------------------------------------------------
楼上说得对
----------------解决方案--------------------------------------------------------
刚看了下书。finally后的代码会执行。但 在你的代码的 return 0 前加段输出语句却没被执行 不知道咋回事了 期待高人解释下。我也糊涂了。应该是那个return -1的事! 但为什么在return 0 前加输出语句也不执行了呢?
----------------解决方案--------------------------------------------------------
.....等特ing
----------------解决方案--------------------------------------------------------
出异常了 后面的代码就不执行了 但必需执行finally里面的代码
你的程序的括号匹配太让人迷惑了!!
我开始还以为是finally里面的呢
----------------解决方案--------------------------------------------------------
楼上的还是没能说明为什么再把return -1 注释掉后会得到0 而不注释就是-1
大括号不是我括的 我是直接复过来的 不好意思 呵呵 这是一道SCJP试题。。
----------------解决方案--------------------------------------------------------