java throws_Java重写throws子句

我正在通过阅读S G Ganesh和Tushar Sharma撰写的书来学习OCJP考试 . 在页346上有一个文字说:

如果您尝试更改throws子句怎么办?在重写方法中有许多方法可以更改throws子句,包括:a . 不提供任何抛出条款 . 湾列出要抛出的更多常规检查异常 . C . 除了基本方法中给定的已检查异常外,还列出了更多已检查的异常 . 如果您尝试这三种情况中的任何一种,您将收到编译器错误 . 例如,尽量不要在实现IntReader接口的类中的readIntFromFile()方法中提供throws子句 . public int readIntFromFile(){

扫描仪consoleScanner =新扫描仪(新文件(“integer.txt”));

return consoleScanner.nextInt();

}

您将收到此编译器错误:“未报告的异常FileNotFoundException;必须被捕获或声明被抛出 . “总而言之,基类方法的throws子句是它为该方法的调用者提供的 Contract :它表示调用者应该处理列出的异常或在其throws子句中声明这些异常 . 覆盖基本方法时,派生方法也应遵守该 Contract . 基本方法的调用者准备只处理基本方法中列出的异常,因此覆盖方法不能抛出更一般的或不是列出的已检查异常 . 但是,请注意,派生类方法的throws子句应遵循基本方法的throws子句的约定的讨论仅限于已检查的异常 . 与基类方法的throws子句相比,仍可以在 Contract 中添加或删除未经检查的异常 . 例如,请考虑以下内容:public int readIntFromFile()throws IOException,NoSuchElementException {

扫描仪consoleScanner =新扫描仪(新文件(“integer.txt”));

return consoleScanner.nextInt();

}

这是一个可接受的throws子句,因为可以从readIntFromFile()方法抛出NoSuchElementException . 此异常是未经检查的异常,当nextInt()方法无法从文件中读取整数时,它会被抛出 . 这是一种常见情况,例如,如果您有一个名为integer.txt的空文件;尝试从此文件中读取整数将导致此异常 .

我有点担心“a . ”这一点 . 它说如果你不提供任何throws子句,代码将无法编译 . 但是当我学习OCA时,我记得我读过你可以提供相同的throws子句,一个更具体的Exception或者没有throws子句,代码仍然会编译,这些只适用于Checked Exceptions . 我试过做一些测试,但我不能得到“未报告的异常FileNotFoundException;必须被抓或宣布被抛出 . “我记得我看过它,但我不知道在哪种情况下 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值