`
qdpurple
  • 浏览: 276763 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

e.printlStackTrack() jdk自带解释学习

阅读更多

 

在异常捕获时,e.printStackTrace()是我们经常遇到的.它究竟print了什么,先从eclipse自带的提示(jdk源码注释)中学习一下:
void java.lang.Throwable.printStackTrace()

Prints this throwable and its backtrace to the standard error stream. This method prints a stack trace for this Throwable object on the error output stream that is the value of the field System.err. The first line of output contains the result of the toString() method for this object. Remaining lines represent data previously recorded by the method fillInStackTrace(). The format of this information depends on the implementation, but the following example may be regarded as typical:

打印出Throwable对象e的堆栈信息:

首行打印出e.toString()信息,

接着打印通过fillInStackTrace()记录的信息(打印格式由实现Throwable的实现方法决定) 9行是 出现异常的地方

6行调用了9行

3行调用了6行

 java.lang.NullPointerException
         at MyClass.mash(MyClass.java:9)
         at MyClass.crunch(MyClass.java:6)
         at MyClass.main(MyClass.java:3)
 

This example was produced by running the program:

 class MyClass {
     public static void main(String[] args) {
3        crunch(null);
     }
     static void crunch(int[] a) {
6         mash(a);
     }
     static void mash(int[] b) {
9         System.out.println(b[0]);
     }
 }
 

The backtrace for a throwable with an initialized, non-null cause should generally include the backtrace for the cause. The format of this information depends on the implementation, but the following example may be regarded as typical:

对于多级异常的抛出,会使用Caused By: 格式来显示异常的由来.

当异常信息含有Cause时,堆栈信息的表示:先列出出现异常的地方,介质一步一步追踪,知道找到最终异常出现的地方.

总结:直接看最后Cause by 语句,即为引起所有异常出现的地方,如本例的最后一个Caused by:为LowLevelException,下面第一个at 即为异常所在的行,本例为30行

 

 HighLevelException: MidLevelException: LowLevelException
         at Junk.a(Junk.java:13)
         at Junk.main(Junk.java:4)
 Caused by: MidLevelException: LowLevelException
         at Junk.c(Junk.java:23)
         at Junk.b(Junk.java:17)
         at Junk.a(Junk.java:11)
         ... 1 more
 Caused by: LowLevelException
         at Junk.e(Junk.java:30)
         at Junk.d(Junk.java:27)
         at Junk.c(Junk.java:21)
         ... 3 more
 

Note the presence of lines containing the characters "...". These lines indicate that the remainder of the stack trace for this exception matches the indicated number of frames from the bottom of the stack trace of the exception that was caused by this exception (the "enclosing" exception). This shorthand can greatly reduce the length of the output in the common case where a wrapped exception is thrown from same method as the "causative exception" is caught. The above example was produced by running the program:

...的含义:

 public class Junk {
     public static void main(String args[]) { 
         try {
             a();
         } catch(HighLevelException e) {
             e.printStackTrace();
         }
     }
     static void a() throws HighLevelException {
         try {
             b();
         } catch(MidLevelException e) {
             throw new HighLevelException(e);
         }
     }
     static void b() throws MidLevelException {
         c();
     }   
     static void c() throws MidLevelException {
         try {
             d();
         } catch(LowLevelException e) {
             throw new MidLevelException(e);
         }
     }
     static void d() throws LowLevelException { 
        e();
     }
     static void e() throws LowLevelException {
         throw new LowLevelException();
     }
 }

 class HighLevelException extends Exception {
     HighLevelException(Throwable cause) { super(cause); }
 }

 class MidLevelException extends Exception {
     MidLevelException(Throwable cause)  { super(cause); }
 }
 
 class LowLevelException extends Exception {
 }
 

 

0
0
分享到:
评论

相关推荐

    jdk-8u311-windows-x64.exe

    jdk-8u311-windows-x64.exe jdk-8u311-windows-x64.exe.zip jdk-8u311-windows-x64.exe jdk-8u311-windows-x64.exe.zip jdk-8u311-windows-x64.exe jdk-8u311-windows-x64.exe.zip jdk-8u311-windows-x64.exe jdk-8u...

    JDK1.8+API+中文文档+高清完整版+CHM.rar JDK1.8+API+中文文档+高清完整版+CHM.rar

    JDK1.8+API+中文文档+高清完整版+CHM.rar JDK1.8+API+中文文档+高清完整版+CHM.rar JDK1.8+API+中文文档+高清完整版+CHM.rar JDK1.8+API+中文文档+高清完整版+CHM.rar JDK1.8+API+中文文档+高清完整版+CHM.rar JDK...

    rt.jar JDK1.8源码

    JDK动态代理生成字节码,用到了ProxyGenerator.generateProxyClass()方法,这个是rt.jar包中的方法,而安装JDK之后的src.zip没有包含。苦于找不到源码,下载了一个又报错,代码也不全,这里给大家分享一下亲测可用的...

    JDK7安装包.zip

    JDK7安装包.zip\JDK7安装包.zip\JDK7安装包.zip\JDK7安装包.zip\JDK7安装包.zip JDK7安装包.zip\JDK7安装包.zip\JDK7安装包.zip\JDK7安装包.zip\JDK7安装包.zip JDK7安装包.zip\JDK7安装包.zip\JDK7安装包.zip\JDK7...

    jdk-8u201-linux-x64.tar.gz jdk8版本下载

    wget https://download.oracle.com/otn-pub/java/jdk/8u201-b09/19653737fcf44bf8b142cd4444e57450/jdk-8u201-linux-x64.tar.gz ``` 2. **解压**:下载完成后,使用`tar`命令进行解压。假设下载的文件在当前目录...

    unity2021.3 安卓JDK,SDK

    在这个版本中,针对安卓平台的开发,Unity集成了对Java Development Kit(JDK)和Software Development Kit(SDK)的支持,以确保开发者能够顺利地构建和发布安卓应用。 首先,让我们了解一下JDK(Java Development...

    java-jdk1.8-8u361-all-jdk-win-linux

    java-jdk1.8-8u361-all-jdk-win-linux 该压缩包中包含jdk1.8-8u361下windows版本和linux版本,其包含快速安装包和对应的jdk压缩包版本,具体内容如下: jdk-8u361-linux-aarch64.rpm jdk-8u361-linux-i586.rpm jdk-8...

    jdk-13.0.2.rar jdk13官网下载的, 这里下载更快

    jdk-13.0.2.rar jdk13官网下载的, 这里下载更快 jdk-13.0.2.rar jdk13官网下载的, 这里下载更快 jdk-13.0.2.rar jdk13官网下载的, 这里下载更快

    jdk1.5.exe jdk1.5

    jdk1.5.exe jdk1.5 jdk1.5下载

    jdk-11.0.19-linux-x64-bin.tar.gz文件(分享给需要的同学)

    jdk-11.0.19_linux-x64_bin.tar.gz文件 jdk-11.0.19_linux-x64_bin.tar.gz文件 jdk-11.0.19_linux-x64_bin.tar.gz文件 jdk-11.0.19_linux-x64_bin.tar.gz文件 jdk-11.0.19_linux-x64_bin.tar.gz文件 jdk-11.0.19_...

    jdk1.8.031 jdk1.8

    jdk1.8.031 jdk1.8

    Aspose.Words.jdk.jar

    Aspose.Words.jdk.jar!!!! Aspose.Words.jdk.jar !!!!Aspose.Words.jdk.jar!!! Aspose.Words.jdk.jar!!!java转words

    jdk1.7.0_80.zip JDK1.7稳定版

    jdk1.7.0_80.zip JDK1.7稳定版,jdk1.7.0_80.zip JDK1.7稳定版,jdk1.7.0_80.zip JDK1.7稳定版,jdk1.7.0_80.zip JDK1.7稳定版,jdk1.7.0_80.zip JDK1.7稳定版

    jdk各种版本[<1G]

    jdk-7u17-windows-x64.exe jdk-7u40-linux-arm-vfp-sflt.tar.gz jdk-7u75-linux-arm-vfp-hflt.tar.gz jdk-7u75-linux-x64.tar.gz jdk-7u79-linux-x64.gz jdk-8u40-linux-x64.gz jdk-8u40-windows-x64-8.0.40.25....

    JDK1.5最终版全平台下载

    JDK1.5 全平台安装包下载 百度网盘资源 jdk-1_5_0_22-linux-amd64-rpm.bin jdk-1_5_0_22-linux-amd64.bin jdk-1_5_0_22-linux-i586-rpm.bin jdk-1_5_0_22-linux-i586.bin jdk-1_5_0_22-solaris-amd64...

    jdk 1.7.71 jdk1.7.76 jdk1.8 for Mac or for linux

    由于资源太大 上传不了,故将所有资源放到云盘,文档内有网盘链接,这些jdk都是mac linux安装包 win用户谨慎下载

    jdk安装包:jdk-22-windows-x64-bin.zip

    jdk安装包:jdk-22_windows-x64_bin.zip jdk安装包:jdk-22_windows-x64_bin.zip jdk安装包:jdk-22_windows-x64_bin.zip jdk安装包:jdk-22_windows-x64_bin.zip jdk安装包:jdk-22_windows-x64_bin.zip jdk安装包...

    dubbo-admin-2.5.8.war jdk 9

    dubbo-admin-2.5.8.war jdk 9 dubbo-admin-2.5.8.war jdk 9 dubbo-admin-2.5.8.war jdk 9

    jdk-8u131-linux-i586.tar

    jdk-8u131-linux-i586.tarjdk-8u131-linux-i586.tarjdk-8u131-linux-i586.tarjdk-8u131-linux-i586.tarjdk-8u131-linux-i586.tarjdk-8u131-linux-i586.tarjdk-8u131-linux-i586.tarjdk-8u131-linux-i586.tarjdk-8u...

    json.jar jdk_1.6

    json.jar jdk_1.6 对应的开发

Global site tag (gtag.js) - Google Analytics