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。

  • 相关阅读:
    you don't have permission to access forbidden
    SQL优化之语句优化
    MySQL索引介绍
    com.jcraft.jsch.JSchException: java.io.FileNotFoundException: file:D:developmentideaProjectssalary-card argetsalary-card-0.0.1-SNAPSHOT.jar!BOOT-INFclasses!keystorelogin_id_rsa 资源未找到
    Java 原生日志 java.util.logging
    为什么volatile不能保证原子性?
    SpringCloud-微服务配置统一管理SpringCloud Config(七)
    SpringCloud-微服务网关ZUUL(六)
    SpringCloud-容错处理Hystrix熔断器(五)
    SpringCloud-声明式Rest调用Feign(四)
  • 原文地址:https://www.cnblogs.com/feng747/p/13916485.html
Copyright © 2011-2022 走看看