|
18
|
| Ethan Heilman · 技术社区 · 17 年前 |
|
|
1
49
通常的处理方式是 exception chaining . 只需将fileNotFoundException包装在RuntimeException中:
这种模式不仅适用于特定情况下无法发生异常的情况(如您的情况),而且也适用于您没有办法或意图真正处理异常的情况(如数据库链接失败)。 编辑 :要小心这种类似的反模式,我在野外经常看到这种反模式:
通过这样做,您可以丢弃原始stacktrace中的所有重要信息,这通常会使问题难以跟踪。 另一个编辑: 正如托尔比安徒生在他的回答中正确指出的那样,在评论中或者更好的是,作为例外信息,说明你为什么要将例外情况链接起来并不伤人:
|
|
|
2
11
通过将选中的异常嵌套在RuntimeException中,可以将其转换为未选中的异常。如果异常在堆栈中被捕获得更高,并使用printstacktrace()输出,那么原始异常的堆栈也将显示出来。
这是一个很好的解决方案,在这种情况下您应该毫不犹豫地使用它。 |
|
3
10
考虑使用表单
相反。这允许您向维护人员传达要遵循的含义,无论是在读取代码时还是在某些奇怪的场景中引发异常时。 编辑:这也是一种通过机制传递异常的好方法,该机制不需要这些异常。例如,如果您有“从数据库中获取更多行”迭代器,迭代器接口不允许抛出,例如,fileNotFoundException,这样您就可以像这样包装它。在使用迭代器的代码中,然后可以捕获RuntimeException,并使用getcause()检查原始异常。在通过遗留代码路径时非常有用。 |
|
|
4
7
如果您的立场是,这是如此不可能的,应该只是结束程序,使用现有的运行时异常,甚至运行时异常本身(如果不是IllegalstateException)。
|
|
|
5
1
您最好还是抛出超类和更一般的异常
当类的构造函数运行时,文件可能存在,但这并不保证:
等。
我不想重新发明轮子,我想说只要把IOException重新扔到JDK的任何地方/
还有一个讨厌从构造函数中抛出异常的类——如果我是你,我会去掉这些异常。 |
|
|
6
1
我在谷歌上搜索了一下,找到了这个代码。我觉得这种方法比较灵活 对这个的赞美 article
|
|
|
7
1
我也遇到过同样的问题。 在最简单的情况下,您将错误通知用户,并建议重复或取消操作。 在一般情况下,工作流是一系列操作(包括I/O),其中每个操作“假定”前一个操作已成功。 我选择的方法是创建一个“回滚”操作列表。如果工作流成功,则忽略它们。如果发生异常,我将执行回滚并向用户呈现异常。 这是:
典型功能如下:
典型用法是:
这是一个 小的 在现实世界中有点棘手,因为
但是我已经习惯了这种方法,现在我的应用程序更稳定了。 |
|
8
1
不要只是用
相反,将较低级别的异常封装在较高级别的异常中,然后重新引发。然后在调用链上处理更高级别的异常。 例如:
很可能引发异常的调用堆栈正在应用程序中执行某些任务。而不是用
|
|
|
M.Jane · 组织和编写异常类的正确方法 8 年前 |
|
|
shubham daharwal · java中的内部捕获异常 8 年前 |
|
|
Jon · 如何在不需要任何操作的情况下处理Python异常 8 年前 |
|
|
felix1415 · C++捕获(标准::异常和e)与捕获(…) 8 年前 |
|
k0pernikus · 如何在scala中键入可能引发异常的函数? 8 年前 |