10.30 动手动脑

1、CatchWho

package com.edu.iq;
public class CatchWho
{
    public static void main(String[] args)
    {
        try
        {
             try
             {
                 throw new ArrayIndexOutOfBoundsException();
             }
             catch(ArrayIndexOutOfBoundsException e)
             {
                 System.out.println(  "ArrayIndexOutOfBoundsException" +  "/内层try-catch");
             }
             throw new ArithmeticException();
        }
        catch(ArithmeticException e)
        {
            System.out.println("发生ArithmeticException");
        }
        catch(ArrayIndexOutOfBoundsException e)
        {
           System.out.println(  "ArrayIndexOutOfBoundsException" + "/外层try-catch");
        }
    }
}

2、CatchWho2

package com.edu.iq;
public class CatchWho2
{
    public static void main(String[] args)
    {
        try
        {
             try
             {
                 throw new ArrayIndexOutOfBoundsException();
             }
             catch(ArithmeticException e)
             {
                 System.out.println( "ArrayIndexOutOfBoundsException" + "/内层try-catch");
             }
             catch(ArrayIndexOutOfBoundsException e)
                {
                    System.out.println( "ch");
                }
             finally
             {
              System.out.println("*****");
             }
            throw new ArithmeticException();
        }
        catch(ArithmeticException e)
        {
            System.out.println("发生ArithmeticException");
        }
        catch(ArrayIndexOutOfBoundsException e)
        {
            System.out.println( "ArrayIndexOutOfBoundsException" + "/外层try-catch");
        }
    }
}

3、EmbededFinally

package com.edu.iq;
public class EmbededFinally
{
 public static void main(String args[])
 {
  int result;
  try
  {
   System.out.println("in Level 1");
    try
   {      
    System.out.println("in Level 2");
    //
    result=100/0;  //Level 2 
     try
    {
      System.out.println("in Level 3");    
      //result=100/0;  //Level 3
    }
    catch (Exception e)
    { 
     System.out.println("Level 3:" + e.getClass().toString());
    }
    finally
    {
     System.out.println("In Level 3 finally");
    }
    result=100/0;  //Level 2
   }
   catch (Exception e)
   {
     System.out.println("Level 2:" + e.getClass().toString());
    }
    finally
   { 
    System.out.println("In Level 2 finally");
    }
   // result = 100 / 0;  //level 1
  }
  catch (Exception e)
  {
   System.out.println("Level 1:" + e.getClass().toString());
  }
  finally
  {
    System.out.println("In Level 1 finally");
  }
 }
}
 
 
 
 

当程序中出现多层try结构嵌套时,内层的try结构若捕捉到异常则会屏蔽外层异常,以致异常不能被捕捉

4、SystemExitAndFinally

package com.edu.iq;
public class SystemExitAndFinally
{
   
 public static void main(String[] args)
   
 {
       
  try
  {
           
   System.out.println("in main");
           
   throw new Exception("Exception is thrown in main");
              //System.exit(0);
       
  }
       
  catch(Exception e)
         {
           
   System.out.println(e.getMessage());
           
   System.exit(0);
       
  }
       
  finally
       
  {
           
   System.out.println("in finally");
       
  }
   
 }

}
 
该程序中finally语句并未被执行,即finally并不是总是被执行
 
原文地址:https://www.cnblogs.com/lx06/p/13916348.html