2011-06-10 15 views
6

No es necesario declarar las excepciones comprobadas en la cláusula throws o manejarlas en try/catch block en scala es la característica que me encanta. Pero puede ser un problema cuando se debe manejar una excepción pero se ignoró. Estoy buscando herramientas (tal vez el indicador/plugin del compilador) para encontrar métodos que ignoraron las excepciones marcadas.¿Cómo encontrar excepciones que fueron "ignoradas"?

+3

Hubo un debate sobre la lista de debate de scala y Martin Odersky dijo esto: http://groups.google.com/group/scala-debate/msg/99369ca6c4959894 –

Respuesta

0

Una opción es atrapar la excepción en un nivel muy alto de su aplicación (La parte superior sería main -metodo).

Otra opción sería utilizar un UncaughtExceptionHandler (si se encuentra en una JVM):

object MyUncaughtExceptionHandler extends Thread.UncaughtExceptionHandler { 
    def uncaughtException(thread: Thread, throwable: Throwable) { 
    println("Something bad happened!") 
    } 
} 

val t = new Thread(new Runnable { 
    override def run() { 
    null.toString 
    } 
}); 

t.setUncaughtExceptionHandler(MyUncaughtExceptionHandler) 
t.start() 
+4

Parece que el operador está buscando un control estático y usted propone dos métodos de tiempo de ejecución. – ziggystar

+0

@ziggystar Así es, esperar que algo malo suceda en la producción no es una opción. – Jeriho

0

yo sepa, no hay tales herramientas, sin embargo, una técnica que he utilizado con éxito es instalar simplemente un a -punto de ruptura de punto de inflexión en su IDE (IntelliJ o Eclipse) para java.lang.Throwable que pausará la ejecución en el punto de lanzamiento de cada excepción java (o error) mientras el programa se ejecuta y luego seguir presionando "reproducir" para ver todos (al menos en la ruta de ejecución que le interese)

Cheers ...

Cuestiones relacionadas