2

我正在做一个需要执行两种不同操作的项目。我的主控制器方法中有一个 finally 块。

我的问题是,我最后能不能有两个以上,例如:

class test
{
    X()
    {
        try
        {
            //some operations
        }
        finally
        {
            // some essential operation
        }

    }

    //another method
    Y()
    {
        try
        {
            //some operations
        }
        finally
        {
            // some another essential operation
        }
    }
}

那么,有可能吗?

4

3 回答 3

8

每个 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
}
于 2012-11-09T11:08:21.340 回答
2

最后我能有两个以上吗

是的,您可以拥有任意数量的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
{

}
于 2012-11-09T11:10:46.337 回答
-2
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");

     }
}

……

于 2013-11-29T14:08:16.167 回答