gpt4 book ai didi

java - Try block 在 printStackTrace 方法正在打印时开始打印

转载 作者:行者123 更新时间:2023-11-29 03:18:26 26 4
gpt4 key购买 nike

public class Argon {

public static void main(String[] args) {
Basil basil = new Basil();
Scanner in = new Scanner(System.in);

do {
try {
System.out.println("Please enter a number!");
String num1 = in.nextLine();
System.out.println("Please enter another number!");
String num2 = in.nextLine();
basil.numberCruncher(num1, num2);
System.out.println(basil.getSum());
break;
} catch (NumberException e) {
e.printStackTrace();

}
} while (true);

}

}

上面的代码会尝试一段代码并捕获发生的任何错误。我故意提供了一个错误,代码打印了以下内容。

Please enter a number!
nop
Please enter another number!
w
NumberException: Your Program Went Bananas.
Please enter a number!
at Basil.numberCruncher(Basil.java:23)
at Argon.main(Argon.java:15)

Stack Trace 还没有完全打印出来,但是 try block 开始执行了。为什么会发生这种情况,我该如何解决?

最佳答案

Throwable#printStackTrace 默认打印到 System.err。您正在打印到 System.out。由于只有一个控制台,它会接收这两个流。

无论您看到什么控制控制台,都必须进行自己的缓冲和刷新,这不会同步每个流的写入,即使程序按顺序执行,也可能导致混合输出。

关于java - Try block 在 printStackTrace 方法正在打印时开始打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25099642/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com