在异常捕获时,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 {
}
分享到:
相关推荐
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 JDK...
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...
wget https://download.oracle.com/otn-pub/java/jdk/8u201-b09/19653737fcf44bf8b142cd4444e57450/jdk-8u201-linux-x64.tar.gz ``` 2. **解压**:下载完成后,使用`tar`命令进行解压。假设下载的文件在当前目录...
在这个版本中,针对安卓平台的开发,Unity集成了对Java Development Kit(JDK)和Software Development Kit(SDK)的支持,以确保开发者能够顺利地构建和发布安卓应用。 首先,让我们了解一下JDK(Java Development...
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官网下载的, 这里下载更快
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_...
jdk1.8.031 jdk1.8
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稳定版
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 全平台安装包下载 百度网盘资源 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都是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安装包...
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.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 对应的开发