2009-10-10 9 views
25

जावा के विपरीत, स्कैला आपको बिना किसी पकड़ या आखिरकार खंड के एक नंगे "कोशिश" करने देता है:स्कैला की "कोशिश" का अर्थ कैच या आखिरकार ब्लॉक के बिना क्या होता है?

scala> try { println("Foo") } 
Foo 

क्या इसका वास्तव में कोई अर्थ है,

{ println("Foo") } 

?

+1

स्कैला 2.11 के रूप में, हमें एक चेतावनी मिलती है। चेतावनी: पकड़ के बिना प्रयास करें या अंत में अपने शरीर को एक ब्लॉक में डालने के बराबर है; कोई अपवाद नहीं किया जाता है। – Jus12

उत्तर

25

स्कैला का अपवाद हैंडलिंग एक अज्ञात पकड़ समारोह में किसी भी अपवाद को पारित करके काम करता है। कैच फ़ंक्शन पकड़े गए अपवाद से मेल खाने वाले पैटर्न द्वारा काम करता है और यदि यह मेल नहीं खाता है तो यह अपवाद को पार कर जाएगा।

पकड़ समारोह वैकल्पिक है, अगर इसे छोड़ा जाता है तो अपवाद सीधे पारित हो जाता है। तो अनिवार्य रूप से

try { exceptionThrowingFunction() } 

रूप

exceptionThrowingFunction() 

अधिक जानकारी के लिए language spec पीडीएफ के अध्याय 6.22 देखें एक ही है।

1

मुझे ऐसा नहीं लगता है। मुझे लगता है कि स्कैला बिना पकड़ के कोशिश करता है या आखिरकार क्योंकि इसे मना करने का कोई कारण नहीं है।

+5

ठीक है, मान लीजिए कि नंगे "कोशिश" का उपयोग करने का कोई वास्तविक कारण कभी नहीं है, यह कहने का एक कारण है कि प्रोग्रामर गलतियों को पकड़ना और संभावित भ्रम को कम करना होगा। लेकिन निश्चित रूप से, यह किसी भी तरह से एक बड़ा सौदा नहीं है। –

संबंधित मुद्दे