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

    1.

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

    运行截图

     先运行第一个try,第一个try里包含里第二个,运行第二个,捕获到第二个的错误到catch处理,出来之后抛出ArithmeticException 的错误再次捕获到catch处理。处理过的就没了不会到最后一个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"); 
            } 
        } 
    }

    运行截图

     第二个try里面的异常没有被第一个catch所捕捉到所以顺延下一个catch第二个类型不一样顺延第三个,第三个成功捕捉到。

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

    运行截图

     在第三个try中存在异常,并进行成功的捕捉到临近的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也不一定执行,如果提前终止则不会执行finally。

  • 相关阅读:
    解决tomcat CNTA-2020-0004漏洞
    简单理解程序如何控制硬件的
    【Spring】Spring Session的简单搭建与源码阅读
    【Spring】Spring,我的零散使用杂记
    CORS跨域、Cookie传递SessionID实现单点登录后的权限认证的移动端兼容性测试报告
    【Fiddler】Fiddler抓包
    一起学习Maven
    分布式系统接口调用回滚方案
    【FastDFS】FastDFS在CentOS的搭建
    【Java】Java日志框架Logback的简单例子
  • 原文地址:https://www.cnblogs.com/feng747/p/13916485.html
Copyright © 2011-2022 走看看