Tengo el siguiente código:¿Por qué este break break break no funciona?
public void post(String message) {
final String mess = message;
(new Thread() {
public void run() {
while (true) {
try {
if (status.equals("serviceResolved")) {
output.println(mess);
Game.log.fine("The following message was successfully sent: " + mess);
break;
} else {
try {Thread.sleep(1000);} catch (InterruptedException ie) {}
}
} catch (NullPointerException e) {
try {Thread.sleep(1000);} catch (InterruptedException ie) {}
}
}
}
}).start();
}
En mi archivo de registro encuentro un montón de líneas de la siguiente manera:
The following message was successfully sent: blablabla
The following message was successfully sent: blablabla
The following message was successfully sent: blablabla
The following message was successfully sent: blablabla
Y mi programa no responde.
Me parece que el comando break
no funciona. ¿Cuál puede ser una posible razón para eso?
Lo interesante es que no ocurre todo el tiempo. A veces mi programa funciona bien, a veces ocurre el problema descrito anteriormente.
FWIW: podría factorizar las dos líneas Thread.sleep() en una sola línea ejecutada después del try/catch externo. –
La captura de 'NullPointerException' no parece una gran idea (se supone que debe verificar si' status == null' - si es así, comprueba si 'status' es' null' en su lugar).Y 'InterruptedException' debería hacerse para salir del ciclo (no es que me guste la interrupción de hilo, pero está allí y por lo tanto debería tratarse)./También puede hacer que el parámetro 'final', por lo que no necesita la copia' mess'. –
Esta es una razón clara de por qué nunca debe silenciar una excepción a menos que realmente necesite hacerlo: la depuración se convierte en un infierno. – Jack