当前位置:嗨网首页>书籍在线阅读

15-在任务中抛出异常

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

5.5 在任务中抛出异常

Java中有如下两种异常。

  • 受检异常: 这些异常必须在方法声明中抛出或在方法内部捕获,比如 IOExceptionClassNotFoundException
  • 未受检异常: 这些异常不必声明或是捕获,例如 NumberFormatException

一方面,在 ForkJoinTask 类的 compute() 方法中,不能抛出任何受检异常,因为该方法的实现声明不包含抛出异常,所以必须在内部实现处理异常的功能;另一方面,可以抛出一个未受检异常。 ForkJoinTask 类和 ForkJoinPool 类的行为可能和读者所期望的不同,程序不会结束执行,并且不会在控制台输出任何信息,异常就像从未抛出一样,而是直接被程序“吞食”了。只有当在初始任务中调用 get() 方法时,任务才会抛出异常。不过,开发者可以使用 ForkJoinTask 类中的部分方法来获知任务是否已抛出异常和抛出异常的类型。本节将介绍获取这些信息的方法。