Java:异常处理中的未知错误

时间:2014-10-24 14:00:33

标签: java exception exception-handling

我有一个奇怪的问题。我今天在课堂上进行了一次测验。测验的一部分是在一小段代码中找到并纠正错误。其中一个问题是这样的

 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");
        }
    }
 }

我认为该计划没有错误,但我的教授坚持说有。谁能猜到错误是什么?

4 个答案:

答案 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但可能会抛出ExceptionThrowable这是它的超级类。

try {
    System.out.println("xyz");
} catch (IOException e) {
    //simple display error statement here
} finally {
    //simple print statement here
}