码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA异常处理

时间:2015-11-15 00:56:18      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:

 

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.当有多个嵌套的trycatchfinally时,要特别注意finally的执行时机。

2.当有多层嵌套的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");

 

        }

 

        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语句。

技术分享 

 技术分享

 

// 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() + "\n" );

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

   }

}

 

 技术分享

 

应该注意:

当程序中出现异常时,JVM会依据方法调用顺序依次查找有关的错误处理程序。

可使用printStackTrace 和 getMessage方法了解异常发生的情况:

1.printStackTrace:打印方法调用堆栈。

2.每个Throwable类的对象都有一个getMessage方法,它返回一个字串,这个字串是在Exception构造函数中传入的,通常让这一字串包含特定异常的相关信息。

 

JAVA异常处理

标签:

原文地址:http://www.cnblogs.com/amiee/p/4965967.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!