try-catch-finally执行例题

例题:

package algorithms.com.guan.javajicu;
public class TestDemo
{
    public static String output = ””;
    public static void foo(inti)
    {
        try
        {
            if (i == 1)
            {
                throw new Exception();
            }
        }
        catch (Exception e)
        {
            output += “2”;
            return ;
        } finally
        {
            output += “3”;
        }
        output += “4”;
    }
    public static void main(String[] args)
    {
        foo(0);
        foo(1);
        System.out.println(output);
    }
}

结果:3423

解析:

1. 先执行foo(0): 因为不满足try中的条件,所以直接到了finally执行output += “3”;然后执行try-catch-finally外的output += “4”;
   这一步得到的结果为:34
2. 执行foo(1):满足try中if条件,抛出异常;此时会catch中会捕获异常执行output += “2”;	
   然后执行return跳出方法foo();
3. 由于finally一定会执行,所以在跳出方法前依然会执行 output += “3”;
   所以最终结果为:3423

总结:try-catch-finally异常处理中finally块中的内容一定会执行,即使在try或catch中执行了return。

你可能感兴趣的:(try-catch-finally执行例题)