class Example {
public static void main(String[] args) {
try {
System.out.println("xyz");
} catch (Exception e) {
System.out.println("Exception caught");
} finally {
System.out.println("abc");
}
}
}
我认为该计划没有错误,但我的教授坚持说有。谁能猜到错误是什么?
答案 0 :(得分:5)
"错误"可能是您不需要在此处理任何异常:System.out.println
未指定任何已检查的异常。它可能只是:
public static void main(String[] args) {
System.out.println("xyz");
}
由于Exception
类涵盖了已检查和未检查的异常,因此如果您在此处添加catch
块,在这种情况下,您将只处理未经检查的异常,这些异常通常不应处理。< / p>
答案 1 :(得分:1)
上述程序中没有错误,但也没有必要放try{} catch{}
....因为你不使用任何可以抛出异常的代码 ,例如像Thread.sleep();
所以也许这就是你教授的意思。
答案 2 :(得分:0)
好吧,我没有看到任何会阻止编译的东西,但我确实看到了一些问题。首先,有一些注释表明存在不存在的代码。与代码不同步的注释始终是个问题。 [编辑:缩进错误已被编辑]你正在捕捉异常e,你真的不应该这样做。您应始终捕获您期望遇到的特定异常,并专门处理它。由于System.out.println无法抛出任何异常,这将使整个异常处理块成为问题。
答案 3 :(得分:0)
如果与IOException
一起使用,则以下代码段会引发编译错误,因为System.out.println
永远不会抛出IOException
但可能会抛出Exception
或Throwable
这是它的超级类。
try {
System.out.println("xyz");
} catch (IOException e) {
//simple display error statement here
} finally {
//simple print statement here
}