【问题标题】:is try-catch without finally the same as try-catch with finally?try-catch without finally 和 try-catch with finally 一样吗?
【发布时间】:2014-11-27 08:03:09
【问题描述】:

我真的不明白 finally 块的使用... 在 try-catch 块中,无论我们是否使用 finally,我们都可以获得相同的代码运行。 例如这些代码有什么区别:

   try
   {
       System.out.println(1/0);
   }
   catch(ArithmeticException e)
   {
       System.out.println("Error");
   }
   finally
   {
       System.out.println("After try-catch");
   }

还有这个:

   try
   {
       System.out.println(1/0);
   }
   catch(ArithmeticException e)
   {
       System.out.println("Error");
   }

   System.out.println("After try-catch");

运行代码的输出或层次结构在逻辑上有何不同???

【问题讨论】:

    标签: exception-handling try-catch finally


    【解决方案1】:

    finally始终执行,除非在某些情况下,例如 System.exit() 调用或线程突然退出。

    一如既往,JLS 定义了所有行为

    【讨论】:

    • 另外,如果我在 catch 之后编写代码而没有 finally 块,无论是否发生异常,它都会执行!!
    • @Ahmad,如果抛出异常或发生RuntimeException,则不会。
    • 你的意思是“如果抛出异常”??可以举个例子吗?
    猜你喜欢
    • 2011-02-20
    • 2011-10-26
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 2011-10-31
    • 2014-04-27
    • 1970-01-01
    • 2018-10-24
    相关资源
    最近更新 更多