2011-01-30 22 views
22

मुझे नहीं पता कि एम्मा "आखिरकार" ब्लॉक को पूर्ण कोड कवरेज क्यों नहीं देती है। मैंने इसे प्रदर्शित करने के लिए एक संक्षिप्त उदाहरण कार्यक्रम बनाया है।क्यों एम्मा आखिरकार ब्लॉक करने के लिए पूर्ण कवरेज नहीं देती है?

जब मैं कार्यक्रम क्रियान्वित यह पता चलता है:

try 
finally 

तो मैं नहीं मिलता है क्यों अंत में लाल (निष्पादित नहीं) और "अंत में" "println के रूप में चिह्नित किया गया है" पीले चिह्नित है (आंशिक रूप से निष्पादित) । क्या मैं कुछ भूल रहा हूँ? एम्मा को कैसे समझें कि आखिरकार ब्लॉक कवर किया गया है?

example

धन्यवाद!

उत्तर

16

ईएमएमए फैक: Implicit branches due to finally blocks. में आंशिक रूप से कवर अंततः ब्लॉक के विषय पर छूने पर इस पर एक प्रविष्टि है। शायद यह मदद करता है।

+2

धन्यवाद! वास्तव में कोशिश ब्लॉक के अंदर और बिना अपवाद के कोड को निष्पादित करने से आखिरकार ब्लॉक को पूरा कवरेज मिलता है। – stivlo

+0

@stivlo क्या आप और समझा सकते हैं? – JPM

+3

@JPM कारण Aioobe द्वारा प्रदान किए गए लिंक में लिखा गया है: * कंपाइलर को यह सुनिश्चित करना होगा कि क्लीनअप कोड [अंत में ब्लॉक] हमेशा निष्पादित किया जाता है, चाहे प्रयास ब्लॉक में कोई अपवाद डाला गया हो या नहीं। इस प्रकार अंततः ब्लॉक में अग्रणी दो संभावित पथ हैं: अपवाद के बिना और बिना लंबित। * – stivlo