使用throws声明抛出异常:throws只能在方法签名中使用,可以声明抛出多个异常类,以逗号隔开。
使用throws的情况:
1、当前方法不知道应该如何处理这种类型的异常。
2、该异常应该由上一级调用者处理。
抛出的异常将讲给JVM处理。处理方法是:打印异常跟踪栈信息并终止程序运行,这就是程序一道异常后自动结束的原因。
注意:使用throws抛出异常时有一个限制,就是方法重写时:子类方法中声明抛出的异常类型应该是父类抛出异常类型的子类或相等。
使用Checked异常至少存在两大不便之处:
1、对于程序中Checked异常,java要求必须显式的捕获并处理该异常或显式声明抛出,这就爱增加了编程的复杂度。
2、如果在方法中显式声明抛出Checked异常麻将会导致方法签名与异常耦合,如果方法是重写父类的方法,则该方法能抛出的异常还受被重写方法所抛出的异常限制。
使用throw抛出异常:
java允许程序自行抛出异常,由throw来完成。其抛出的不是异常类,而是一个异常实例,每次只能抛出一个异常实例。
如果throw抛出的异常时checked异常,则该throw语句要么处于try块里,显式捕获该异常,要么放在一个带有throws声明的方法中;如果throw语句抛出的异常时runtime异常,则该语句无须放在try块里或带throws抛出的方法中,程序可以显式使用try...catch来捕获,并处理异常,也可以完全不理会该异常,把该异常交给该方法调用者处理。