有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在一个catch块中使用多个异常的优势是什么?

我们都听说,在Java 7中,我们可以编写:

try {
   //something with files and IO
} catch (FileNotFoundException | IOException ex) {
    ex.printStackTrace();
    System.out.println("It's can't copy file");
}

而不是

try {
   //something with files and IO
} catch (FileNotFoundException wx) {
    ex.printStackTrace();
} catch (IOException ex) {
   ex.printStackTrace();
}

但是,除了更短的代码,它还有什么真正的好处呢
即使我们希望在每个catch块中执行相同的操作,我们也可以:

  1. 仅捕获IOException,因为FileNotFoundException是子类型
  2. 若一个异常不是另一个异常的子类型,我们可以编写一些handleException()方法并在每个catch块中调用它

那么,这个特性是只用于更干净的代码还是其他用途

谢谢


共 (5) 个答案

  1. # 1 楼答案

    这是为了更干净的代码。。但这是非常宝贵的。在某些情况下,您可能会抛出4或5个异常,如果您想在所有情况下都执行相同的操作(通常是这样),则会减少大量代码

    这使得它更具可读性,也更易于测试。这本身就很有价值

  2. # 2 楼答案

    这个想法相当于以下两者之间的区别:

    if (myVar == true && myOtherVar == false)
        // Logic
    

    if (myVar == true)
    {
        if (myOtherVar == false)
            // Same logic
    }
    

    它只是更简短、更干净的代码

  3. # 3 楼答案

    这并不是为了让代码看起来更干净和节省按键。这些都是附带福利

    重复会导致不一致和错误。因此,通过创建一种不需要重复的语法,可以避免真正的错误。这就是编写速度更快的枯燥而不漂亮的代码背后的动机

  4. # 4 楼答案

    代码越短,维护代码就越少——这不是什么小优势。是的,我可以编写异常处理方法,但现在我不经常这样做,例如,只有当异常被抛出到代码的不同位置时

  5. # 5 楼答案

    是的,它主要用于更干净的代码