gpt4 book ai didi

java - 为什么我的 Java 异常在 SwingWorker 中抛出时不打印堆栈跟踪?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:06:31 25 4
gpt4 key购买 nike

为什么当我围绕这段代码包装 SwingWorker 时它不再报告抛出异常?

import java.security.InvalidParameterException;

import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;

public class Test {

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {

@Override
public void run() {
new SwingWorker<Void, Void>() {

@Override
protected Void doInBackground() throws Exception {
IntegerString s = new IntegerString("EIGHT");
return null;
}

}.execute();

}

});

}

}

class IntegerString {

public IntegerString(String s) {
if (!isInteger(s)) {
System.out.println("...throwing exception.");
throw new InvalidParameterException("Thrown.");
}
// ...
}

static boolean isInteger(String str) {
if (str == null) {
return false;
}
int length = str.length();
if (length == 0) {
return false;
}
int i = 0;
if (str.charAt(0) == '-') {
if (length == 1) {
return false;
}
i = 1;
}
for (; i < length; i++) {
char c = str.charAt(i);
if (c <= '/' || c >= ':') {
return false;
}
}
return true;
}
}

最佳答案

您必须调用 get() 来检索 doInBackground() 中发生的任何异常。例如,你可以在 done() 方法中完成,即:

@Override
protected void done() {
try {
get();
} catch (Exception e) {
e.printStackTrace();
}
}

关于java - 为什么我的 Java 异常在 SwingWorker 中抛出时不打印堆栈跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14695214/

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