
展开全部
printStackTrace
public void printStackTrace()将此 throwable 及其追踪输出到标准错误流。此方式将此 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]);
}
}
对于带初始化非空 cause 的 throwable 的追踪,通常需要包含 cause 的追踪。此信息的格式取决于实现,但下列例子是很常用的:
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
注意,存在包括字符 "..." 的行。这些行指示此异常的椎栈跟踪的其余个别匹配来自异常(由 "enclosing" 异常导致)的堆栈跟踪底部的指定数量的帧。这种简便方式可以大大缩短通常状况下的输出长度,这里抛出了包装的异常java stack tracejava stack trace,其方式与捕获“作为 cause 的异常”的方式相似。上述例子通过运行下列程序生成:
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 {
}
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/shouji/article-141194-1.html
我们的军队好久没打仗了
泻作屎