如果某个方法可能会发生异常,但不想在当前方法中处理这个异常,则可以使用throws,throw关键字在方法中抛出异常。
使用throws关键字抛出异常
throws关键字通常被应用在声明方法时,用来指定方法可能抛出的异常,多个异常可使用逗号分隔,使用throws关键字抛出异常的语法格式为:
返回值类型名 方法名(参数表) throws异常类型名{
方法体
}
使用throws为方法抛出异常时,如果子类继承父类,子类重写方法抛出的异常也要和原父类方法抛出的异常相同或是其异常的子类,除非throws异常时RuntimeException。
如果方法抛出了异常,在调用该方法时,必须为捕捉的方法处理异常,当然,如果使用throws关键字将异常抛给上一级后,不想处理该异常,可以继续向上抛出,但最终要有能够处理该异常的代码。例如,上面的例子中,如果在调用pop方法时,没有处理NegativeArraySizeException异常,而是处理了其他异常,比如把代码修改为下图,
程序运行时将会出现如下图所示的异常提示。
而如果将catch后面的异常修改为Exception,异常提示即可消失,因为Exception类是NegativeArraySizeException类的父类,这里相当于将异常交给了Exception处理。
使用throw关键字抛出异常。
throw关键字通常用于在方法中"制造"一个异常,程序在执行到throw语句时立即终止,他后面的语句都不执行。使用throw关键字抛出异常的语法格式为:
throw new 异常类型名(异常信息)
throw通常用于在程序中出现某种逻辑错误时,由开发者主动抛出某种特定类型的异常,我们来看一个例子。
throw通常用来抛出用户自定义异常,通过throw关键字抛出异常后,如果想在上一级代码中捕获并处理异常,最好在抛出异常的方法声明中使用throws关键字指明要抛出的异常,如果要捕捉throw抛出的异常,则需要使用try…catch代码块。
throws关键字和throw关键字的区别如下。
1,throws用在方法声明后面,表示抛出异常,由方法的调用者处理,而throw用在方法体内,用来制造一个异常,由方法体内的语句处理。
2,throws是声明这个方法会抛出这种类型的异常,以便使它的调用者知道要捕获这个异常,而throw是直接抛出一个异常实例。
3,throws表示出现异常的一种可能,并不一定会发生这些异常如果使用throw,就一定会产生某种异常。