10.3.1 使用throws声明抛出异常
10.3.1 使用throws声明抛出异常
使用throws
声明抛出异常的思路是,当前方法不知道如何处理这种类型的异常,该异常应该由上级调用者处理;
如果main
方法也不知道如何处理这种类型的异常,也可以使用throws
声明抛出异常,该异常将交给JVM
处理。
JVM
对异常的处理方法是,打印异常的跟踪栈信息,并中止程序运行,这就是前面程序在遇到异常后自动结束的原因。
在方法签名中使用throws声明抛出异常
throws
声明抛出只能在方法签名
中使用,throws
可以声明抛出多个异常类,多个异常类之间以逗号隔开。
throws
声明抛出的语法格式仅跟在方法签名之后,如下例子程序使用了throws
来声明抛出IOException
异常,一旦使用throws
语句声明抛出该异常,程序就无须使用try-catch
块来捕获该异常了。
1 | import java.io.*; |
上面程序声明不处理IOException
异常,将该异常交给JVM
处理,所以程序一旦遇到该异常,JVM
就会打印该异常的跟踪栈信息,并结束程序。运行上面程序,效果如下所示:
1 | Exception in thread "main" java.io.FileNotFoundException: a.txt (系统找不到指定的文件。) |
如果某段代码中调用了一个带throws
声明的方法,该方法声明抛出了Checked
异常,则表明该方法希望它的调用者来处理该异常。也就是说,调用该方法时要么放在try
块中显式捕获该异常,要么放在另一个带throws
声明抛出的方法中。如下例子程序示范了这种用法。
1 | import java.io.*; |