当前位置: 首页 > 知识库问答 >
问题:

为什么我应该在Java中使用嵌套的try-catch块?

齐乐
2023-03-14

我真的不明白使用嵌套的try-catch块的意义。它们很难阅读,有时也不太直白。例如:

try {
 // do something
}
catch ( [exception_1] e) {}
catch ( [exception_2] e) {}
catch ( [exception_3] e) {}

上面的代码可读性更强,我可以理解它的功能——如果发生异常,可以由其中一个catch块处理。但如果我使用嵌套表单:

try {
   try {
      try {
         // Do something for try-block 3
      }
      catch ( [exception_1] except_1) {};
      // Do something for try-block 2
   }
   catch ( [exception_2] except_2) {};
   // Do something for try-block 1
}
catch ( [exception_3] except_3) {}

上面的代码乱七八糟!但它实现了与第一个代码完全相同的功能。还是没有?帮我弄清楚:(

共有1个答案

卫浩瀚
2023-03-14

Emm,看你怎么写代码了。如果某些代码将被使用,例如...

try {
   try {
      -->in here<--
      try {
         // Do something for try-block 3
      }
      catch ( [exception_1] except_1) {};
      // Do something for try-block 2
   }
   catch ( [exception_2] except_2) {};
   // Do something for try-block 1
}
catch ( [exception_3] except_3) {}

如果引发exception_ 1,则不会捕获。如果所有的东西都能在第三次尝试中使用,那就没什么区别了。

 类似资料:
  • 在下面的示例中,您可以看到无法使用外部catch子句捕获IOException(命名为第四个)异常。这是为什么?我知道,如果在嵌套的try块中抛出异常,使用外部catch可以捕获异常。如果您将b静态变量值更改为false,那么您可以看到这一点。 但是为什么我们不能使用外部catch捕获在嵌套catch子句中抛出的异常呢? 如果b=真,则输出: fileNotFoundException:FIRST

  • 我在java selenium上编写了一个try/catch块,我不明白为什么它不能工作。它应该在网页上检查一个web元素,如果没有找到,它应该抛出一个NoSuchElementException并转到catch块。真正发生的情况是,没有找到元素,执行也没有继续catch块,它通过测试(Selenium WebTest)并完全停止执行,我的测试也失败了。我还在main方法中包含了“throws N

  • 问题内容: 之间有什么区别: 和 我知道JPanel是GUI组件的容器,但我确实看不到使用它的实用程序。当然,我错了,但我是从Swing开始的,所以…为什么我应该使用JPanel?真正的目的是什么? 问题答案: 为什么我应该使用JPanel? 您可以使用JPanel获得以下一项或多项好处: 将组件分组在一起。 为了更好地组织您的组件。 为了使我们能够使用 多种布局 并组合其效果。(例如,用于数字键

  • 当我阅读Java中的System.nanoTime()API时。我发现了这句台词: 一个应该使用t1-t0<0,而不是t1 Java整数compareTo()-为什么使用比较与减法? 这两件事产生矛盾。

  • 我想知道什么时候可以有效地使用。我不确定到底有多有用,有三个原因。 (请将start和end视为整数。) > 如果我想要一个数组,,下面的代码要快得多。 我不认为仅仅获取从到的数字是有用的。我可以将

  • 问题内容: 我刚刚在我们的代码库中找到了一个静态嵌套接口。 我以前从未见过。原始开发人员遥不可及。因此,我不得不问: 静态接口背后的语义是什么?如果我删除,会发生什么变化static?为什么有人会这样做? 问题答案: 上例中的static关键字是多余的(嵌套接口自动为“ static”),可以删除而不会影响语义;我建议将其删除。接口方法上的“公共”和接口字段上的“公共最终”也是如此-修饰符是多余的