【发布时间】:2017-07-01 20:15:51
【问题描述】:
好吧,我有这个代码:
SwingWorker<Void,Void> worker = new SwingWorker<Void, Void>() {
@Override
public Void doInBackground() {
Connection checker = new Connection();
do{
checker.checkConnection();
}while(true);
}}
方法如下
checkConnection()
public void checkConnection(){
do{
try{
URL url = new URL("http://www.google.com");
URLConnection uc = url.openConnection();
BufferedReader br = new BufferedReader(new InputStreamReader(uc.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
System.out.println("You're connected");
}
online = true;
}catch(Exception noConnessione){
System.out.println("No connection...");
System.out.println("I'm going to try again in 30s...");
robot.delay(30000);
online = false;
}
}while(online == false);}
好吧,如果没有连接,它就不会进入 catch 块,但如果我在没有 swingworker 的情况下使用相同的代码,它就会进入。
我绝对需要swingworker,我该如何解决这个问题?
【问题讨论】:
-
Swing 工作者按预期工作。我想你需要发布完整的代码。也许其他地方有错误。
-
@mko:从来没有完整代码,但如果可能的话,总是一个像样的minimal reproducible example。
-
哇,机器人只是为了避免 InterruptedException?但说真的,不确定尽可能多地连接到 Google 是否是个好主意,至少在成功连接后也插入一些延迟
-
@CarlosHeuberger 机器人做的远不止这些,我只是尝试发布最少的代码,是的,在整个版本中也有延迟。
-
机器人部分并不是认真的,;很久以前,我只是花了一些时间考虑使用它来忽略 InterruptedException ......无论如何,这个最小的代码是否也会出现问题?它对我有用。
标签: java exception swingworker