में सभी अपवादों मैं फ़ाइल test.scala
में निम्नलिखित डमी स्काला कोड है:पकड़ने स्काला 2.8 RC1
class Transaction {
def begin() {}
def commit() {}
def rollback() {}
}
object Test extends Application {
def doSomething() {}
val t = new Transaction()
t.begin()
try {
doSomething()
t.commit()
} catch {
case _ => t.rollback()
}
}
यदि मैं यह स्काला 2.8 RC1 पर scalac -Xstrict-warnings test.scala
साथ संकलन मैं निम्न चेतावनी मिल जाएगा:
test.scala:16: warning: catch clause swallows everything: not advised.
case _ => t.rollback()
^
one warning found
तो, अगर पकड़ें- सभी अभिव्यक्तियों की सलाह नहीं दी जाती है, तो मुझे इसके बजाय इस तरह के पैटर्न को कैसे लागू करना चाहिए? और इसके अलावा ऐसे अभिव्यक्तियों को किसी भी तरह क्यों सलाह नहीं दी जाती है?
ठीक है। यह लेनदेन के लिए काम करता है। लेकिन क्या होगा अगर मैं पूरी तरह से एक अपवाद एक विधि सिर्फ इसलिए कि यह इस बिंदु पर कोई फर्क नहीं पड़ता द्वारा फेंका अनदेखा करना चाहते। –
आप {केस _: अपवाद =>} 'पकड़ सकते हैं। 'त्रुटि' 'थ्रोबल 'है लेकिन' अपवाद 'नहीं - आमतौर पर जाने के लिए बेहतर है। यदि आपका वास्तव में मतलब है, "मुझे कोई परवाह नहीं है कि मैं कोशिश करता हूं और इसे पकड़ने में असफल रहता हूं, मैं कम से कम इसे अपना सर्वश्रेष्ठ शॉट देना चाहता हूं", तो आप (सख्त) चेतावनी संदेश के साथ रह सकते हैं। यही कारण है कि यह एक चेतावनी है, एक त्रुटि नहीं। –
हाँ, यह काम करता है। धन्यवाद! आप सही हैं, 'त्रुटि' को पकड़ना वास्तव में मैं नहीं चाहता हूं :-) –