我正在尝试使用 finally 块而不使用 try/catch 块,但在 Eclipse 中出现错误。
我可以在不使用 try/catch 块的情况下使用 finally 块吗?
我正在尝试使用 finally 块而不使用 try/catch 块,但在 Eclipse 中出现错误。
我可以在不使用 try/catch 块的情况下使用 finally 块吗?
finally应该至少有一个try块,catch是可选的。finally 块的目的是确保无论是否引发异常,都可以清理内容。根据JLS
finally 子句确保 finally 块在 try 块和任何可能执行的 catch 块之后执行,无论控制如何离开 try 块或 catch 块。
因此,afinally应该总是在一个try块之前。
您必须有一个带有块try的finally块。该try块定义代码将跟随哪些代码行finally。try如果在块之前抛出异常,则finally代码将不会执行。
添加catch块是可选的:
try {
// something
} finally {
// guaranteed to run if execution enters the try block
}
如果在 try 块之前抛出异常,finally 代码将不会执行。finally 块总是在 try 块退出时执行。所以你可以使用finally而不用catch,但你必须使用try。
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
}
finally 块总是在 try 块退出时执行。所以你可以使用finally而不用catch,但你必须使用try。
有关更多详细信息,请在此处查看文档
不能没有finallya的try原因是因为您可以finally在同一范围内有多个语句,并且try指示finally在发生错误的情况下属于哪个代码块。
另一个有趣的特性finally是,无论何时try输入,它都必须执行。例如,如果您使用 agoto跳过您的finally语句怎么办?如果在goto内部,try它将执行finally语句,但是如果在语句goto之上/外部,try那么它将跳过finally代码。finally仅与try. 如果您没有尝试,那么与finally任何事情都无关。
try 语句应该有 catch 块或 finally 块,它可以有两个块。
我们不能在 try-catch-finally 块之间编写任何代码。
如果没有 try 语句,我们就不能有 catch 或 finally 子句。
我们可以使用单个 try 语句拥有多个 catch 块。try-catch 块可以嵌套,类似于 if-else 语句。
我们只能有一个带有 try-catch 语句的 finally 块。
来自 Oracle Trails:
finally 块总是在 try 块退出时执行。这样可以确保即使发生意外异常也会执行 finally 块。
从上面的陈述来看,你不能单独拥有 finally 块。以下是允许的组合。
最后尝试抓住
试着抓
最后尝试
finally如果程序控制流进入相应的块,则保证块内的代码执行try。所以没有 afinally没有 a是没有意义的try。
唯一的例外是程序System.exit(...)在块之前遇到调用finally,因为这会关闭虚拟机。
不,你不能
你可以使用Try-catch-finally或try-finally
try {
}catch (Exception e){
}
finally{
}
或者
try {
}
finally{
}