我正在做一个项目,我需要执行两个不同的操作。 我的主控制器方法中有一个 finally 块。
我的问题是,我最终可以有两个以上,例如:
class test
{
X()
{
try
{
//some operations
}
finally
{
// some essential operation
}
}
//another method
Y()
{
try
{
//some operations
}
finally
{
// some another essential operation
}
}
}
那么,这可能吗?
每个 try/catch/finally 语句只能有一个finally
子句,但可以在同一方法或多个方法中有多个这样的语句。
基本上,try/catch/finally 语句是:
try
catch
(0 或更多)finally
(0 或 1)
。但必须至少有一个catch
/finally
(你不能只有一个"裸露"的try
陈述)
此外,您可以嵌套它们;
// Acquire resource 1
try {
// Stuff using resource 1
// Acquire resource 2
try {
// Stuff using resources 1 and 2
} finally {
// Release resource 2
}
} finally {
// Release resource 1
}
我最终可以有两个以上
吗
是的,您可以拥有任意数量的try - catch - finally
组合,但它们都应该正确格式化。(即语法应该正确)
在您的示例中,您编写了正确的语法,它将按预期工作。
您可以通过以下方式拥有:
try
{
}
catch() // could be more than one
{
}
finally
{
}
或
try
{
try
{
}
catch() // more than one catch blocks allowed
{
}
finally // allowed here too.
{
}
}
catch()
{
}
finally
{
}
public class Example {
public static void main(String[] args) {
try{
try{
int[] a =new int[5];
a[5]=4;
}catch (ArrayIndexOutOfBoundsException e)
{
System.out.println("Out Of Range");
}finally{
System.out.println("Finally Outof Range Block");
}
try{
int x=20/0;
}catch (ArithmeticException e)
{
System.out.println("/by Zero");
}finally{
System.out.println("FINALLY IN DIVIDES BY ZERO");
}
}catch (Exception e) {
System.out.println("Exception");
}
finally{
System.out.println("FINALLY IN EXCEPTION BLOCK");
}
System.out.println("COMPLETED");
}
}
......