2011-01-30 15 views
22

No entiendo por qué emma no da cobertura de código completo a los bloques "finalmente". He hecho un breve programa de ejemplo para demostrar esto.¿Por qué emma no da cobertura completa a los bloques finalmente?

Cuando ejecuto el programa muestra:

try 
finally 

Así que no entiendo por qué, finalmente, se marca como rojo (no ejecutado) y el "fin" "println" se marca amarilla (parcialmente ejecutado) . ¿Me estoy perdiendo de algo? ¿Cómo hacer que emma entienda que el bloque final está cubierto?

example

Gracias!

Respuesta

16

Hay una entrada al respecto en la sección de preguntas y respuestas de EMMA: Implicit branches due to finally blocks. tocando el tema de bloques finalmente cubiertos parcialmente. Tal vez eso ayude.

+2

¡Gracias! De hecho, la ejecución del código con y sin excepción dentro del bloque try brinda una cobertura completa al bloque finally. – stivlo

+0

@stivlo ¿Puedes explicar más? – JPM

+3

@JPM El motivo está escrito en el enlace proporcionado por aioobe: * El compilador debe asegurarse de que el código de limpieza [el bloque finally] siempre se ejecute, independientemente de si hay una excepción lanzada en el bloque try. Por lo tanto, hay dos caminos posibles que conducen al bloque final: con y sin una excepción pendiente. * – stivlo

Cuestiones relacionadas