作家
登录

Java异常的深入研究与分析

作者: 来源: 2017-06-06 13:00:49 阅读 我要评论

  • public void method3() 
  •     try 
  •     method2(); 
  • catch(MyException e) 
  •     e.printStackTrace(); 
  •     …… 
  •  
  • 膳绫擎method2的代铝闼楝try块捕获method1抛出的数据库异常SQLException后,抛出了新的自定义异常MyException。这段代码是否并没有什愦问题,但看一下控制台的输出:

    1. MyException:产生了数据库异常:对象名称'MyTable' 无效。 
    2.  at MyClass.method2(MyClass.java:232) 
    3.  at MyClass.method3(MyClass.java:255)  

    原始异常SQLException的信息损掉了,这里只能看到method2琅绫擎定义的MyException的客栈情况;而method1中产生的数据库异常的客栈则看不到,若何排错呢,只有在method1的代码行一一行行去寻找数据库操作语句了。

    JDK的开辟者们也意识到了这个情况,在JDK1.4.1中,Throwable类增长了两个构造办法,public Throwable(Throwable cause)和public Throwable(String message,Throwable cause),在构造函数中传入的原始异常客栈信息将会在printStackTrace办法中打印出来。但对于还在应用JDK1.3的法度榜样员,就只能本身实现打印原始异常客栈信息的功能了。实现过程也很简单,只须要在自定义的异常类中增长一个原始异常字段,在构造函数中传入原始异常,然后重载printStackTrace办法,起首挪用览鲂保存的原始异常的printStackTrace办法,然后再调用super.printStackTrace办法就可以打印出原始异常信息了。可以如许定义前面代码中出现的MyException类:

    1. import java.io.PrintStream; 
    2. import java.io.PrintWriter; 
    3. public class MyException extends Exception 
    4.  
    5.     private static final long serialVersionUID = 1L; 
    6.     //原始异常 
    7.     private Throwable cause; 
    8.     //构造函数 
    9.     public MyException(Throwable cause) 
    10.     { 
    11.         this.cause = cause; 
    12.     } 
    13.     public MyException(String s,Throwable cause) 
    14.     { 
    15.         super(s); 
    16.         this.cause = cause; 
    17.     } 
    18.     //重载printStackTrace办法,打印出原始异常客栈信息 
    19.     public void printStackTrace() 
    20.     { 
    21.         if (cause != null
    22.         { 
    23.             cause.printStackTrace(); 
    24.         } 
    25.         super.printStackTrace(); 
    26.     } 
    27.  
    28.     public void printStackTrace(PrintStream s) 

        推荐阅读

        开源要「开」得安全高效:开源云计算的五大发展趋势

      编者按:以前几年,开辟者几乎都邑用到开源。开源现象日益广泛,有赖于业内人士的聪明和尽力。不过,更重要的┞氛样开源本身的优势:可以或许随便马虎整合多种多样的开源解决筹划。在业内>>>详细阅读


      本文标题:Java异常的深入研究与分析

      地址:http://www.17bianji.com/lsqh/35587.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)