Java:异常处理中的未知错误
我有个奇怪的问题。今天我在班上做了个小测验。测验的一部分是在一小段代码中发现并纠正错误。其中一个问题是这样的
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");
}
}
}
我以为程序中没有错误,但我的教授坚持认为有错误。有人能猜出错误是什么吗
# 1 楼答案
如果与
IOException
一起使用,下面的代码段将抛出编译错误,因为System.out.println
永远不会抛出IOException
,但可以抛出Exception
或Throwable
,这是它的超类# 2 楼答案
“错误”可能是您不需要在此处处理任何异常:
System.out.println
未指定任何选中的异常。它可能只是:由于
Exception
类既包含检查的异常,也包含未检查的异常,因此如果在此处添加catch
块,在这种情况下,您将只处理未检查的异常,通常不应处理这些异常# 3 楼答案
嗯,我看不到任何东西会阻止这个编译,但我确实看到了一些问题。首先,有一些注释表明存在不存在的代码。注释与代码不同步总是一个问题。 [编辑:缩进错误已被编辑掉]并且您正在捕获异常e,这是您真的不应该做的。您应该始终捕获预期会遇到的特定异常,并具体处理它。因为这个系统也不例外。出来println可以抛出,这将使整个异常处理块成为一个问题