JS *_*lón 10 java exception-handling exception checked-exceptions unchecked-exception
我已经阅读了关于此的所有内容,但我仍然不明白如何使用已检查和未检查的异常.我想我还是不能理解这个概念.我已经阅读了StackOverflow,最好使用未经检查而不是检查异常,但Eclipse 强制我使用已检查的异常,如FileNotFoundException(AFAIK,如果Eclipse强制我插入try/catch块,它是一个已检查的异常).我想知道,有没有办法将检查转换为未检查?到底该处理什么?我不明白处理异常是什么.
我在这里有这个例子,我真的想知道如何处理(?)这个.这是一个经过检查的例外,对吧?
public void readFile() {
File foo = new File("./foo.bar");
try {
BufferedReader bufferedReader = new BufferedReader(new FileReader(foo));
} catch (FileNotFoundException e) {
// What should I do here?
}
getDataFromFile(bufferedReader);
}
Run Code Online (Sandbox Code Playgroud)
我见过人们在这里做的各种事情.有些人会打印堆栈跟踪,这就是我通常所做的,而且我没有看到它的问题.它为我提供了调试所需的信息.有些人会忽略它们,我认为不应该这样做(我看到JNode OS引导程序忽略了异常).有些人只是throws在签名中添加声明.有些人会在这件事中抛出更多例外!(我想也许这是使用unchecked而不是checked方法?)
此外,如果你添加throws声明,你将被迫进一步放置一个try/catch块,如果你有一个非常大的应用程序,这是不方便的.对不起,我只是一无所知.完全.我正在努力学习优雅而优雅的设计,这让我感到折磨.
未经检查的异常
由于不应该首先发生的事情是一个例外,因此无法预料.它处理只有在程序出现错误时才会出现的情况.
它是一个亚类RuntimeException(其的子类Exception),并且通常实现使用IllegalArgumentException,NullPointerException或IllegalStateException
未经检查的运行时异常表示一般来说反映程序逻辑中的错误并且无法在运行时合理恢复的条件.
检查异常
由于系统其他部分存在不可预见的情况,可能会发生这种情况.它超出了你的直接控制范围,但不一定是一个bug,而是一个可能遇到的情况.
它是的子类Exception.
如果某些条件占优势(磁盘已满),即使在生产代码中,也不会出现该文件,因为它可能会发生.这使它成为检查异常.
例外旨在提供更好的用户体验.因此,您应该向用户报告错误,如果无法继续,则会正常终止.
如果确实是您预期的情况,那么您应该告知用户该问题,并在必要时优雅地终止,或继续进行下一步.
如果它是一个未经检查的异常,你可以做的最好的事情是告诉用户而不是发生意外错误,因为它不是首先应该发生的事情,并将堆栈跟踪报告给你.
| 归档时间: |
|
| 查看次数: |
594 次 |
| 最近记录: |