Default constructor cannot handle exception type FileNotFoundException thrown by implicit super cons

这是在运行Java的时候常遇见的问题:

报错信息:Default constructor cannot handle exception type FileNotFoundException thrown by implicit super constructor. Must define an explicit constructor。

意思是:默认的构造函数不能处理隐式超级构造函数引发的异常类型 FileNotFoundException,必须定义显式构造函数。

具体情形:在测试RandomAccessFile这个类的使用方法时

声明了一个RandomAccessFile类型【全局变量】。

import java.io.FileNotFoundException;
import java.io.RandomAccessFile;

public class MyRandomAccessFile {
    private RandomAccessFile  file = new RandomAccessFile("D:/demo/test.txt", "rw");
}

然后搜了一下,都在放屁。

我查看了一下RandomAccessFile的构造函数的API:

public RandomAccessFile​(String name,String mode)throws FileNotFoundException
FileNotFoundException - if the mode is "r" but the given string does not denote an existing regular file, 
or if the mode begins with "rw" but the given string does not denote an existing, writable regular file and a new regular file of that name cannot be created, 
or if some other error occurs while opening or creating the file

我先是查了下隐式构造函数转显示构造函数的方法,然后查了下这个错误的详细信息,木有。

最后看到API才明白:原来是这个方法的构造函数中声明了throws \ FileNotFoundException

这样我们就没法直接使用这个方法,因为类名是无法声明throws的,所以:

1. 新建一个方法,将此RandomAccessFile作为返回值类型,并声明throws。

public RandomAccessFile createRAFByfilename(String filename,String mode)throws FileNotFoundException{
		return new RandomAccessFile(filename, mode);
}

2. 直接在要新建RandomAccessFile 对象的方法上,声明throws。

public static void main() throws FileNotFoundException {
	MyRandomAccessFile mraf = new MyRandomAccessFile();
	RandomAccessFile file = mraf.createRAFByfilename("D:/demo/test.txt", "rw");
}

总之就是和隐式和显式构造函数没什么鸟关系。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

从零开始的智障生活

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值