• 17.异常(三)之 e.printStackTrace()介绍


      一、关于printStackTrace()方法

      public void printStackTrace()方法将此throwable对象的堆栈追踪输出至标准错误输出流,作为System.err的值。输出的第一行是此对象的toString()方法的结果,剩余行表示以前由方法 fillinStackTrace() 记录的数据。此信息的格式取决于实现,但以下示例是最常见的:

      java.lang.NullPointerException
               at MyClass.mash(MyClass.java:9)
               at MyClass.crunch(MyClass.java:6)
               at MyClass.main(MyClass.java:3)
      本示例通过运行以下程序生成:
      class MyClass {
           public static void main(String[] args) {
               crunch(null);
           }
           static void crunch(int[] a) {
               mash(a);
           }
           static void mash(int[] b) {
               System.out.println(b[0]);
           }
      }

      还有就是,
      catch(Exception e){
        e.printStackTrace() ;
      }

      当try语句中出现异常是时,会执行catch中的语句,java运行时系统会自动将catch括号中的Exception e 初始化,也就是实例化Exception类型的对象。e是此对象引用名称。然后e(引用)会自动调用Exception类中指定的方法,也就出现了e.printStackTrace() ;。
      printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。(这是白话解释,比较容易理解)
      二、关于System.out.println(e)与e.printStackTrace()

      在抛出异常的情况下,有很多方法,System.out.println(e);这个方法打印出异常,并且输出在哪里出现的异常;e.printStackTrace()也是打印出异常,但是它还将显示出更深的调用信息。比如说:
      A extends ---> B extends---> C
      当在创建A的过程中出现问题了,我们抛出异常。<
      System.out.println(e),除了标准异常外,只打印at A 然后再向外层层输出。
      e.printStackTrace(),除了标准异常外,打印at C 、at B、 at A
       .......再向外层调查。
      在向外层调查的情况下,都一样。最后都会回到com.sun.midp.main.Main.main。
      System.out.println();当发生异常时显示你自己设定的字符串信息;就比如下面的代码,try里面进行IO操作,你知道要抛出异常肯定也是IO异常,catch里面就写上特定的IOException,自己打印就行了
      try{
        //function
      }catch(IOException exc){
          System.out.println("IOException");
      }
      e.printStackTrace();是打印异常的堆栈信息,指明错误原因,其实当发生异常时,通常要处理异常,这是编程的好习惯,所以e.printStackTrace()可以方便你调试程序!

    http://www.cnblogs.com/haohaoge/
  • 相关阅读:
    SQL中 decode()函数简介
    php中foreach()的用法
    swfuploadphp上传说明
    未知,等知道什么以后再改
    php上传文件处理
    smarty中的section和foreach
    asp.net 异常:"DataBinding: 'System.Data.DataRowView'
    自定义MembershipProvider配合Asp.net 2.0 Login控件(转的,忘记哪里的了)
    地理信息中各种坐标系区别和转换总结
    asp.net异常DataRowView The type or namespace name 'DataRowView' could not be found
  • 原文地址:https://www.cnblogs.com/haohaoge/p/6549004.html
Copyright © 2020-2023  润新知