资讯教程
Java 使用 throws 关键字在方法名后面声明该方法可能会抛出的异常,然后在方法内部通过 throw 关键字抛出异常对象。
IT热点新闻
Java基础教程:声明异常和抛出异常(1)
来源:易牛云朗沃
  |  
发布时间:2021-12-21 16:48
  |  
关键词:java基础知识
  |  
阅读量:

Java 使用 throws 关键字在方法名后面声明该方法可能会抛出的异常,然后在方法内部通过 throw 关键字抛出异常对象。

注意,throw 和 throws 写法非常相似,但它们是两个不同的关键字,起到的作用也不同。

throws 声明异常

当一个方法产生一个它不处理的异常时,那么就需要在该方法的头部声明这个异常,以便将该异常传递到方法的外部进行处理。使用 throws 声明的方法表示此方法不处理异常。

throws 具体用法如下:

java基础知识

其中,returnType 表示返回值类型,method_name 表示方法名,paramList 表示参数列表,Exception1,Exception2,…表示异常类。

如果有多个异常类,它们之间用逗号分隔。这些异常类可以是方法中调用了可能拋出异常的方法而产生的异常,也可以是方法体中生成并拋出的异常。

使用 throws 声明抛出异常的思路是:

当前方法不知道如何处理这种类型的异常,该异常应该由向上一层的调用者处理;

如果顶层的 main() 方法也不知道如何处理这种类型的异常,也可以使用 throws 声明抛出异常,该异常将交给 JVM 处理。

JVM 对异常的处理方法是,打印异常的跟踪栈信息,并中止程序运行,这就是前面程序在遇到异常后自动结束的原因。

示例 1

创建一个 readFile() 方法,该方法用于读取文件内容,在读取的过程中可能会产生 IOException 异常,但是在该方法中不做任何的处理,而将可能发生的异常交给调用者处理。在 main() 方法中使用 try catch 捕获异常,并输出异常信息。代码如下:

java基础知识

以上代码,首先在定义 readFile() 方法时用 throws 关键字声明在该方法中可能产生的异常,然后在 main() 方法中调用 readFile() 方法,并使用 catch 语句捕获产生的异常。

如果不存在 www.weixxueyuan.net.txt 文件,以上代码将抛出如下的错误:

java.io.FileNotFoundException: www.weixueyuan.net.txt (系统找不到指定的文件。)

方法重写时声明抛出异常的限制

使用 throws 声明抛出异常时有一个限制,是方法重写中的一条规则:子类方法声明抛出的异常类型应该是父类方法声明抛出的异常类型的子类或相同,子类方法声明抛出的异常不允许比父类方法声明抛出的异常多。

请看下面的代码:

java基础知识

上面程序中 Sub 子类中的 test() 方法声明抛出 Exception,该 Exception 是其父类声明抛出异常 IOException 类的父类,这将导致程序无法通过编译。

所以在编写类继承代码时要注意,子类在重写父类带 throws 子句的方法时,子类方法声明中的 throws 子句不能出现父类对应方法的 throws 子句中没有的异常类型,因此 throws 子句可以限制子类的行为。也就是说,子类方法拋出的异常不能超过父类定义的范围。

点击知道更多编程知识

文章来源于网络