2011-01-30 14 views
22

Nie rozumiem, dlaczego emma nie daje pełnego kodu do bloków "w końcu". Zrobiłem krótki przykładowy program, aby to pokazać.Dlaczego emma nie daje pełnego pokrycia na końcu bloków?

Kiedy uruchomić program pokazuje:

try 
finally 

Więc nie rozumiem, dlaczego w końcu jest oznaczony jako czerwony (nie zrealizowanej) i „W końcu” „println” jest oznaczona żółtym (częściowo zrealizowane) . Czy czegoś brakuje? Jak sprawić, by emma zrozumiała, że ​​blok finally jest objęty?

example

Dziękujemy!

Odpowiedz

16

Jest to wpis na stronie EMMA Faq: Implicit branches due to finally blocks. dotykający temat częściowo pokrytych bloków końcowych. Być może to pomaga.

+2

Dziękujemy! W rzeczywistości wykonywanie kodu zi bez wyjątku wewnątrz bloku try daje pełne pokrycie bloku finally. – stivlo

+0

@stivlo Czy możesz wyjaśnić więcej? – JPM

+3

@JPM Przyczyna jest zapisana w łączu dostarczonym przez aioobe: * Kompilator musi zapewnić, że kod czyszczenia [blok finally] jest zawsze wykonywany, niezależnie od tego, czy w bloku try istnieje wyjątek. Istnieją zatem dwie możliwe ścieżki prowadzące do bloku finally: z wyjątkiem i bez wyjątku. * – stivlo

Powiązane problemy