需要在java中抛出哪些异常?

时间:2015-01-27 21:11:55

标签: java exception io throwable

我有这两个java代码:

class test {
    public static void main(String[] args) throws IOException {
        System.out.println("Before try”");
        try{}
        catch(Throwable d ) {}
        System.out.println("done");
    }
}

它将编译并打印在尝试完成之前。

class test {
    public static void main(String[] args) throws IOException {
        System.out.println("Before try”");
        try{}
        catch(java.io.IOException e ) {}
            System.out.println("done");
        }
    }
}

这将导致编译错误:

exception java.io.IOException is never thrown in body of corresponding 
try statement
    at javaapplication8.test.main(Try.java:63) 

抛出异常和IOException之间有什么区别来获得这些结果,是否有规则要知道需要抛出哪个异常?

2 个答案:

答案 0 :(得分:1)

Java有一个检查异常的概念。除非它们是ErrorRuntimeException

的子类,否则将检查所有Throwable

在catch类中,编译器可以确定是否可以抛出已检查的异常(在正常情况下),但它无法判断您是否抛出了未经检查的异常,因此如果您捕获任何未经检查的异常或者是父母,它无法确定你是否可以抛弃它。

答案 1 :(得分:0)

您对main的声明承诺它可能会抛出IOException,但您的代码违反了这一承诺(因为您自己抓住了它)。