zoukankan      html  css  js  c++  java
  • 异常处理动手动脑

    1.

    class AboutException {
    	   public static void main(String[] a) 
    	   {
    	      int i=1, j=0, k;
    	      k=i/j;
    
    
    		try
    		{
    			
    			k = i/j;    // Causes division-by-zero exception
    			//throw new Exception("Hello.Exception!");
    		}
    		
    		catch ( ArithmeticException e)
    		{
    			System.out.println("被0除.  "+ e.getMessage());
    		}
    		
    		catch (Exception e)
    		{
    			if (e instanceof ArithmeticException)
    				System.out.println("被0除");
    			else
    			{  
    				System.out.println(e.getMessage());
    				
    			}
    		}
    
    		
    		finally
    	     	{
    	     		JOptionPane.showConfirmDialog(null,"OK");
    	     	}
    			
    	  }
    	}
    

    结果·:

     分析:使用catch语句,只能捕获Exception类及其子类的对象。因此,一个捕获Exception对象的catch语句块可以捕获所有“可捕获”的异常。

    2

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

    结果·:

     分析:找不到main方法,public static void main(String[] args)未定义

    3.

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

    错误:

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

    4.

    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语句块不一定会执行 

     5.

    // UsingExceptions.java
    // Demonstrating the getMessage and printStackTrace
    // methods inherited into all exception classes.
    public class PrintExceptionStack 
    {
       public static void main( String args[] )
       {
          try 
          {
             method1();
          }
          catch ( Exception e ) 
          {
             System.err.println( e.getMessage() + "
    " );
             e.printStackTrace();
          }
       }
    
       public static void method1() throws Exception
       {
          method2();
       }
    
       public static void method2() throws Exception
       {
          method3();
       }
    
       public static void method3() throws Exception
       {
          throw new Exception( "Exception thrown in method3" );
       }
    }

    结果:

  • 相关阅读:
    querySelectorAll和getElementsByClassName获取元素的区别
    移动端的点透事件
    formidable处理node.js的post请求
    Node中流的概念
    关于Node.js中的路径问题
    前端设计模式——原型模式
    JavaScript中的循环和闭包
    为什么给函数表达式添加函数名
    作为一个初学者如何简单地理解闭包
    JS的with关键字到底是什么?
  • 原文地址:https://www.cnblogs.com/mjhjl/p/13916308.html
Copyright © 2011-2022 走看看