java exception - why does it catch?
我已经开始学习Java中的异常,但是我不知道为什么这个代码的输出是:
1 2 | Throw SimpleException from f() Cought it! |
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class SimpleException extends Exception {} public class InheritingExceptions { public void f() throws SimpleException{ System.out.println("Throw SimpleException from f()"); throw new SimpleException(); } public static void main(String[] args) { InheritingExceptions sed = new InheritingExceptions(); try { sed.f(); } catch (SimpleException e) { System.out.println("Cought it!"); } } } |
您的代码所做的是:
1)创建名为sed的新InheritingExceptions对象
2)使用try-catch块包装sed.f()方法。catch块捕获在try内引发的任何simpleException。
3)sed调用方法f()。f()正在执行以下操作:
- system.out.println("throw simpleexception from f()");--这将打印到控制台"throw simpleexception from f()"
- 引发新的simpleException();
4)由于f()方法引发了simpleException,所以您的try-catch块捕获了它。当被抓到时,它会打印出来,以控制台"打开它!"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class SimpleException extends Exception {} public class InheritingExceptions { public void f() throws SimpleException{ System.out.println("Throw SimpleException from f()"); throw new SimpleException(); } public static void main(String[] args) { InheritingExceptions sed = new InheritingExceptions(); try { sed.f(); } catch (SimpleException e) { System.out.println("Cought it!"); } } } |
因为在
因为
看,当你在主管道里做这个的时候:
1 | sed.f(); |
您正在调用该函数,在该函数f()中,您正在打印"throw simpleexception from f()"并引发异常。在主系统中,你会捕捉到这个异常并打印"cought it!"