没有尝试和捕获最终阻止是否有效?

时间:2013-06-26 08:05:25

标签: java exception exception-handling

我试图在不使用try / catch块的情况下使用finally块,但在Eclipse中获取错误。

我可以在不使用try / catch块的情况下使用finally块吗?

11 个答案:

答案 0 :(得分:15)

finally应至少有一个try块,catch是可选的。 finally块的重点是确保无论是否抛出异常,都会清理内容。根据{{​​3}}

  

finally子句确保finally块在try块之后执行,并且可以执行任何catch块,无论控制如何离开try块或catch块。

因此,finally应始终以try块开头。

答案 1 :(得分:7)

您必须拥有try阻止finally的阻止。 try块定义了finally代码将遵循哪些代码行。如果在try块之前抛出异常,则finally代码将不会执行。

添加catch块是可选的:

try {

  // something

} finally {
  // guaranteed to run if execution enters the try block
}

答案 2 :(得分:4)

try {
    // Block of code with multiple exit points
}
finally {
    // Block of code that must always be executed when the try block
    // is exited, no matter how the try block is exited
}

答案 3 :(得分:2)

当try块退出时,finally块始终执行。所以你可以在没有捕获的情况下使用finally,但必须使用try。

有关详情,请点击此处doc

答案 4 :(得分:2)

如果在try块之前引发异常,则将不会执行finally代码。 try块退出时,finally块始终执行。因此,您可以最终使用而不会陷入困境,但必须使用try。

答案 5 :(得分:1)

你没有finally而没有try的原因是因为你可以在同一范围内有多个finally语句而{{1} }}表示发生错误时try所属的代码块。

finally的另一个有趣特性是,无论何时输入finally,它都必须执行。例如,如果您使用try跳过goto声明,该怎么办?如果finally位于goto内,则会执行try语句,但如果finally位于goto语句之上/之外,则会跳过try finally代码。 finally仅与try中包含的代码相关。如果您没有尝试,则finally与任何内容无关。

答案 6 :(得分:0)

来自Oracle Trails:

  

当try块退出时,finally块始终执行。这个   确保即使意外发生也执行finally块   异常发生。

从上面的陈述中,你不能单独单独阻止它自己。以下是允许的组合。

  1. 尝试        抓住             终于

  2. 尝试         捕获

  3. 尝试            终于

答案 7 :(得分:0)

如果程序控制流进入相应的finally块,则try块中的代码将保证执行。因此,如果finally没有try,则没有任何意义。

唯一的例外是程序在System.exit(...)块之前遇到finally调用,因为它会关闭虚拟机。

答案 8 :(得分:0)

不,你不能

您可以使用Try-catch-finallytry-finally

 try {

    }catch (Exception e){

    }
    finally{

    }

try {

    }
    finally{

    }

答案 9 :(得分:0)

  • 仅使用try块不正确。
  • 尝试块只能与catch或最后一个块一起使用 块。
  • 你可以使用带有catch的try块,最后。如果你使用finally块 使用try块然后catch块变为可选。

答案 10 :(得分:0)

  • try语句应该具有catch块或finally块,它 可以同时拥有两个区块。

  • 我们无法在try-catch-finally块之间编写任何代码。

  • 如果没有try语句,我们将没有catch或finally子句。

  • 我们可以使用一个try语句拥有多个catch块.try-catch块可以类似于if-else语句进行嵌套。

  • 我们只有一个带有try-catch语句的finally块。