2011-01-30 13 views
22

Neden Emma'nın "son olarak" bloklara tam kod kapsamı vermediğini anlamıyorum. Bunu göstermek için kısa bir örnek program yaptım. Ben programı çalıştırmak zamanNiçin Emma son olarak bloklara tam kapsama vermiyor?

gösterir:

try 
finally 

nihayet kırmızı (yürütülmez) ve "nihayet" "println olarak işaretlenmiş yüzden ben alamadım" (kısmen infaz) sarı işaretlenir . Bir şey mi eksik? Emma nihayet bloğun kaplandığını nasıl anlar?

example

teşekkür ederiz! kısmen son olarak kapalı blokların konuda Implicit branches due to finally blocks. dokunmadan:

cevap

16

EMMA SSS bu bir giriş vardır. Belki bu yardımcı olur.

+2

Teşekkür ederiz! Aslında, try bloğu içinde ve istisnasız kodun çalıştırılması, son bloğa tam kapsama sağlar. – stivlo

+0

@stivlo Daha fazlasını açıklayabilir misiniz? – JPM

+3

@JPM Nedeni, aioobe tarafından sağlanan bağlantıda yazılmıştır: * Derleyici, try bloğuna atılmış bir istisna olup olmadığına bakılmaksızın, temizleme kodunun [son olarak blok] her zaman çalıştırıldığından emin olmalıdır. Böylece, son bloğa giden iki olası yol vardır: beklemede ve istisna olmaksızın. * – stivlo

İlgili konular