java - 为什么 Java 有嵌套的 try 语句?
问题描述
我阅读了有关 nested- try
statements的内容catch
,我不禁想知道使用 nested 的实际意义是try
什么?内部的内容try
已经在外部try
,如果要捕获异常,外部try
-catch
将处理它。那么为什么要使用内部try
呢?
例如:
代码 1:
try
{
Statement A;
Statement B;
try
{
Statement C;
Statement D;
}
catch(CException e) { ... }
catch(DException e) { ... }
}
catch(AException e) { ... }
catch(BException e) { ... }
代码 2:
try
{
Statement A;
Statement B;
Statement C;
Statement D;
}
catch(AException e) { ... }
catch(BException e) { ... }
catch(CException e) { ... }
catch(DException e) { ... }
如果我错了,请纠正我,但上面的这两个代码片段不是执行相同的任务吗?
解决方案
您可以围绕内部尝试进行循环,以多次捕获异常而不退出循环。
try {
for (int i = 0; i < 10; i++) {
try {
someOperationThatOftenFails();
} catch (SomeCommonException e) {
...
}
}
} catch (SomeRareFatalException e) {
...
}
在这种情况下,嵌套的 try 块是唯一一种在SomeCommonException
不退出循环的情况下多次捕获的方法,而且SomeRareFatalException
在第一次发生时也会导致退出循环。
推荐阅读
- identityserver4 - 实现 IProfileService 时使用自定义类时出错。类型“IProfileService”在未引用的程序集中定义
- angular-http-interceptors - Angular 拦截器在 Angular 5 版本中不起作用
- bash - 使用命令替换时在终端中显示命令输出
- xslt - 使用 xsl 将日期格式从 dd/mm/yyyy 转换为 yyyy-mm-dd
- python - 如何从字符串中删除括号
- ruby-on-rails - 使用 minitest mocha 时如何为存根指定函数?
- java - 在 setArguments 之后调用 onCreateView 时?
- opencart - 来自模块的 OpenCart 3 标题图像
- flutter - Flutter 中的变量突然为空
- r - Json 到 Dataframe:错误:1:nrow(test) 中的错误:长度为 0 的参数