在java程序中 e.printStackTrace()是哪个意思?有哪些作用?

电脑杂谈  发布时间:2020-02-18 11:00:50  来源:网络整理

stack trace_java 方法调用 trace_java stack trace

展开全部

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);

java 方法调用 trace_stack trace_java stack trace

}

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

java 方法调用 trace_stack trace_java stack trace

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();

}

}

stack trace_java 方法调用 trace_java stack trace

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) {

java stack trace_java 方法调用 trace_stack trace

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

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 处刑人罗斯奥
        处刑人罗斯奥

        泻作屎

      • 明宪宗朱见深
        明宪宗朱见深

        我们的军队好久没打仗了

      热点图片
      拼命载入中...