我试图在不使用try / catch块的情况下使用finally块,但在Eclipse中获取错误。
我可以在不使用try / catch块的情况下使用finally块吗?
答案 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块 异常发生。
从上面的陈述中,你不能单独单独阻止它自己。以下是允许的组合。
尝试 抓住 终于
尝试 捕获
尝试 终于
答案 7 :(得分:0)
如果程序控制流进入相应的finally
块,则try
块中的代码将保证执行。因此,如果finally
没有try
,则没有任何意义。
唯一的例外是程序在System.exit(...)
块之前遇到finally
调用,因为它会关闭虚拟机。
答案 8 :(得分:0)
不,你不能
您可以使用Try-catch-finally
或try-finally
try {
}catch (Exception e){
}
finally{
}
或
try {
}
finally{
}
答案 9 :(得分:0)
答案 10 :(得分:0)
try语句应该具有catch块或finally块,它 可以同时拥有两个区块。
我们无法在try-catch-finally块之间编写任何代码。
如果没有try语句,我们将没有catch或finally子句。
我们可以使用一个try语句拥有多个catch块.try-catch块可以类似于if-else语句进行嵌套。
我们只有一个带有try-catch语句的finally块。