声明抛出异常

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fighting123678/article/details/83924794

1、声明

(1)定义一个类的方法的时候,可以指定这个方法可能抛出什么异常

(2)例如FileInputStream是通过流来读取一个文件,读文件的话,name这会传一个文件路径过来,但是这个路径下面的文件可能不存在,因此这个构造方法可能会错,因此通过FileNoFoundException告诉编译器可能会有什么错误。


2、什么时候需要使用throws呢?

 

(1)在FileInputStream类中,有很多重载的构造函数,在这些重载的构造函数中,有throws声明,throws FileNotFoundException, FileNotFoundException是Exception的子类,不是RuntimeException的子类,是一个需要checked的异常

(2)在new的时候,就会调用其构造方法了,这个构造方法会可能抛出一个checked异常,在main方法中,调用了FileInputStream的构造方法,而这个构造方法又可能抛一个checked异常。

(3)保存之后,会报错,改法1

扫描二维码关注公众号,回复: 4006730 查看本文章
  • 添加了上面的话之后,代表main中也可能会抛出异常
  • 因为main中调用了FileInputStream构造方法,这个构造方法会调用一个FileNotFoundException这样一个checked异常,但是这个代码里面没有进行try、catch处理,调用的方法里面又可能会出现异常,说明main方法中也可能出现FileNotFoundException异常,因此main中也要throw。
  • 调用一个已抛出异常的方法,但是没有try、catch,也就是没有进行相应的处理,这个时候,这个方法所在的方法也需要抛出异常

(4)保存之后,会报错,改法2

 

可能出现异常,那么我们就进行相应的处理

(3)和(4)的改法都是针对已检查异常来说的,对于未检查异常则不需要做相应的改动。

(5)抛出多个异常的话,用“,”分隔开 

(6)对于unchecked异常

按理说,既然已经声明了这么一个异常,那么divide中就应该抛出异常。

但是这样也对,因为ArithmeticExteption是uncheckedException,所以不需要main抛出异常。


3、RuntimeException

可以进行try、catch处理,同时也可以在divide方法中抛出异常,同样这些都不做也正确


4、非RuntimeException


5、总结

 

猜你喜欢

转载自blog.csdn.net/fighting123678/article/details/83924794
今日推荐