java – 抛出主要异常和子类型,有没有正确的方法?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 抛出主要异常和子类型,有没有正确的方法?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1526字,纯文字阅读大概需要3分钟。
内容图文
![java – 抛出主要异常和子类型,有没有正确的方法?](/upload/InfoBanner/zyjiaocheng/824/a681671fc8c6412d886e6a7debb4dd33.jpg)
好的,所以我在SO和程序员之间有一堆与异常相关的问题,但是有很多要问的问题,或者我不知道要输入什么,或者不是很多人问的.
所以,假设我有一个抛出FileNotFoundException(FNFE)的方法.然后我有另一个方法使用第一个,但也抛出IOException(IOE).
我的处理程序会同时捕获它们并对每个执行不同的操作,但是我的IDE(IntelliJ)发出信号,我已经在“抛出列表中有一个更普遍的例外,’java.io.IOException’”.
我知道如果我这样做会有效:
public File openOrCreate(String pathStr) throws FileNotFoundException,
IOException {
try {
// Method that generates the FNFE
Path path = ReposioryProposition.getPath(pathStr);
File file = path.toFile();
catch (FileNotFoundException fnfe) {
throw fnfe;
}
if (!file.exists())
file.createNewFile(); // IOE
return file;
}
但我需要明确地做吗?如果没有明确的版本,它会在没有或更危险的情况下工作吗?
为了确保我们在同一页面,这是我最初编写的东西:
public File openOrCreate(String pathStr) throws FileNotFoundException,
IOException {
Path path = ReposioryProposition.getPath(pathStr);
File file = path.toFile();
if (!file.exists())
file.createNewFile();
return file;
}
但我不确定会发生什么,是FNFE被抛出还是被吞没了?我的目的是分别抓住它们并为另一个做不同的事情.
解决方法:
您只需在throws列表中包含更常规的异常.这已经指定该方法可以抛出此异常的任何子类.
特别是,您必须处理更一般的异常,并且此异常处理程序也将处理子类.如果要显式处理子类,则必须在更一般的异常之前捕获它:
try {
...
}
catch (FileNotFoundException e) {
// handle subclass
}
catch (IOException e) {
// handle general exception (this will not be executed if the
// exception is actually a FileNotFoundException
}
内容总结
以上是互联网集市为您收集整理的java – 抛出主要异常和子类型,有没有正确的方法?全部内容,希望文章能够帮你解决java – 抛出主要异常和子类型,有没有正确的方法?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。