动手动脑__异常处理

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"); 
        } 
    } 
}

  结构

      

 

二、写出程序运行的结果:

public class CatchWho2 { 
    public static void main(String[] args) { 
        try {
            	try { 
                	throw new ArrayIndexOutOfBoundsException(); 
            	} 
            	catch(ArithmeticException 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"); 
        } 
    } 
}

  结果:

      

 

三、请先阅读 EmbedFinally.java示例,再运行它,观察其输出并进行总结:

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");
        
		}
    
	}

}

  

1.当有多个嵌套的try…catch…finally时,要特别注意finally的执行时机。

2.当有多层嵌套的finally时,异常在不同的层次抛出 ,在不同的位置抛出,可能会导致不同的finally语句块执行顺序。

 四、辨析:finally语句块一定会执行吗?、

  

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");

}

}


}

  

截图:

没有 System.exit(0);的时候会输出in finally要是有System.exit(0);则会退出系统不执行finally语句。

五、

import javax.swing.JOptionPane;

public class Test{

	public static void main(String[] args) {

		// TODO 自动生成的方法存根
	
		double n=0.0;
	
		for(int i=0;i<1000000000;i++)
	
		{
	
			String input=JOptionPane.showInputDialog("请输入学生成绩");
	
			try{
	
				n=Double.valueOf(input);
	
				if(n<0)
	
				{
	
					JOptionPane.showMessageDialog(null, "输入不正确");
	
				}
	
				else if(n<60)
	
				{
	
					JOptionPane.showMessageDialog(null,"该学生成绩为不及格");
	
				}
	
				else if(n<70)
	
				{
	
					JOptionPane.showMessageDialog(null,"该学生成绩为及格");
	
				}
	
				else if(n<80)
	
				{
	
					JOptionPane.showMessageDialog(null,"该学生成绩为中等");
	
				}
	
	 
	
				else if(n<90)
	
				{
	
					JOptionPane.showMessageDialog(null,"该学生成绩为良好");
	
				}
	
				else if(n<=100)
	
				{
	
					JOptionPane.showMessageDialog(null,"该学生成绩为优秀");
	
				}
	
				else if(n>100)
	
				{	
	
					JOptionPane.showMessageDialog(null, "输入不正确");
	
				}
	
			}
	
	 
	
			catch(NumberFormatException e)//NumberFormatException异常
	
			{
	
				JOptionPane.showMessageDialog(null, "输入不正确");
	
			}
			
		}
	
	}

}

  结果:

      

 

posted @ 2017-11-16 22:43  浪花98  阅读(159)  评论(0编辑  收藏  举报