Un thread puede lanzar una excepción y capturarla o no. Si el thread no la captura, la excepción sale fuera del método run().
A un thread le podemos asociar un manejador de excepciones no capturadas, manejador que se llama cuando una excepción se sale del método run() sin haber sido capturada.
class Problematica |
class Problematica
extends Thread { private final int n; public Problematica(int n) { this.n = n; } public void run() { int resultado = 100 / n; } } |
class Problemas |
import java.lang.Thread.UncaughtExceptionHandler; public class Problemas { public static void main(String[] args) { UncaughtExceptionHandler eh = new Manejador(); Problematica p = new Problematica(0); p.setName("tarea problemática"); p.setUncaughtExceptionHandler(eh); p.start(); } } |
class Manejador |
import
java.lang.Thread.UncaughtExceptionHandler; class Manejador
implements UncaughtExceptionHandler { public void uncaughtException(Thread thread, Throwable e) { System.err.println(thread.getName() + ": " +
e); } } |
> java Problemas |
tarea problemática: java.lang.ArithmeticException: / by zero |
Temas relacionados