मैंने स्कैला के साथ पढ़ा और प्रयोग किया है 2.9 कोशिश करें ... पकड़ सुविधा, और यह मुझे संभावनाओं के बारे में सोच रहा है। कोड की कुछ पंक्तियों को सहेजने के अलावा मैं वास्तव में इसका उपयोग कैसे करूं?स्कैला 2.9 की कोशिश के लिए उपयोग के मामले क्या हैं ... सामान्यीकरण पकड़ो?
उत्तर
उपयोग के मामले आपके आवेदन भर से निपटने के सामान्य त्रुटि है करने में सक्षम होना है। आइए मान लें कि आप किसी व्यवस्थापक को ई-मेल भेजकर अपने आवेदन में सभी FileNotFoundException
एस को संभालना चाहते हैं। इससे पहले, आप इस तरह यह करने के लिए होगा:
// Globally
val fileNotFound: PartialFunction[Throwable, Unit] = {
case e: FileNotFoundException =>
// Create report and send the e-mail
}
// On each try-catch-block
try {
// Open file
}
catch {
case fnf: FileNotFoundException => fileNotFound(fnf)
}
अब तुम सिर्फ कार्य करें:
try {
// Open file
} catch fileNotFound
यह भी अच्छा लाभ यह है कि आप पर orElse
पद्धति का उपयोग करके कई तरह के अपवाद संचालकों लिंक कर सकते हैं है आंशिक कार्य:
val fileErrors = fileNotFound orElse endOfFile orElse invalidFormat
और फिर बस उस जगह का उपयोग करें जहां आपको फ़ाइल अपवाद हैंडलिंग की आवश्यकता है। उदाहरण के लिए, इस तरह के एक त्रुटि हैंडलर को गतिशील रूप से अनुप्रयोग के लिए कॉन्फ़िगरेशन फ़ाइल के आधार पर जोड़ा जा सकता है। यह हर जगह मिलान पैटर्न और सही हैंडलर को कॉल करने से बहुत कम बोझिल है।
आंशिक कार्यों के शीर्ष पर एक उपयोगी चीज जिसे पंप किया जा सकता है andAlso
ऑपरेटर है, जो दो आंशिक कार्यों पर अनुक्रमक ऑपरेटर के रूप में कार्य करता है। यह तब उपयोगी होगा जब आप सामान्य त्रुटि प्रबंधन करने के बाद किसी विशेष प्रयास-पकड़ ब्लॉक के लिए कुछ त्रुटि प्रबंधन करना चाहते हैं।
implicit def pf2ops(pf: PartialFunction[Throwable, Unit]) = new {
def andAlso(localpf: PartialFunction[Throwable, Unit]) = new PartialFunction[Throwable, Unit] {
def apply(t: Throwable) = {
if (pf.isDefinedAt(t)) pf(t)
localpf(t)
}
def isDefinedAt(t: Throwable) = pf.isDefinedAt(t) || localpf.isDefinedAt(t)
}
}
और फिर आप यह कर सकते हैं:
scala> try {
| throw new java.io.FileNotFoundException
| } catch fnf andAlso {
| case e: Exception => println("I don't know, but something is specific to this particular block.")
| }
I don't know, but something is specific to this particular block.
मैं तुम्हें andAlso
का सही अर्थ विज्ञान और अर्थ (और नाम) के साथ आगे निभा सकता है लगता है।
के लिए एक लिंक जोड़ा अच्छा जवाब - मुझे लगता है कि और भी कुछ हिस्सा मैं लापता था। – Seth
axel22 द्वारा अच्छा जवाब, लेकिन मुझे लगता है कि इसके परिचय के लिए वास्तविक कारण कुछ और है। try
/catch
/finally
हैंडलिंग ने विशेष केस पेश किया। आपने आंशिक फ़ंक्शन शाब्दिक उपयोग किया था, लेकिन आप वास्तव में इसे आंशिक फ़ंक्शन के साथ प्रतिस्थापित नहीं कर सके। अब, catch
बस आंशिक कार्य प्राप्त करें, और भाषा में एक और विशेष मामला चला गया है।
- 1. स्कैला 2.9
- 2. कोरआउट के लिए उपयोग-मामले क्या हैं?
- 3. स्कैला 2.9.x
- 4. पायथन के __new__ के लिए उपयोग के मामले क्या हैं?
- 5. vi के लिए सामान्य उपयोग के मामले क्या हैं?
- 6. गिट अनाथ शाखाओं के लिए उपयोग के मामले क्या हैं?
- 7. सेटिंग्स। मैक्सप्रिंटस्ट्रिंग स्कैला 2.9 REPL
- 8. जेरोमक उपयोग के मामले क्या हैं?
- 9. जावा में ढेर ओवरफ्लो पर कोशिश/पकड़ो?
- 10. वेब श्रमिकों के लिए उपयोग-मामले क्या हैं?
- 11. स्कैला 2.9 में समांतर संग्रह और अभिनेता
- 12. जॉबलिब बनाम अचार के विभिन्न उपयोग के मामले क्या हैं?
- 13. जावास्क्रिप्ट प्रोटोटाइप ऑब्जेक्ट्स के व्यावहारिक उपयोग के मामले क्या हैं?
- 14. स्कैला 2.9 में मानक दशमलव प्रकार क्या है?
- 15. ThreadPool.QueueUserWorkItem उपयोग के मामले
- 16. स्कूल प्रबंधन प्रणाली के लिए डेटाबेस सामान्यीकरण
- 17. स्कैला के प्रकट होने की सीमाएं क्या हैं?
- 18. मैं कोशिश कैसे कर सकता हूं ... फ़्लोटिंग पॉइंट त्रुटियों को पकड़ने के लिए पकड़ो?
- 19. अक्का माइक्रोक्रोनल का उपयोग करने के लिए कुछ सामान्य उपयोग के मामले क्या हैं?
- 20. क्या स्कैला के लिए कोड obfuscation के लिए उपकरण हैं?
- 21. टेम्पलेट में टाइपनाम के लिए नाम घोषित करने के उपयोग के मामले क्या हैं?
- 22. स्कैला निरंतरता के लिए उपयोग
- 23. जावास्क्रिप्ट में बंद/कॉलबैक फ़ंक्शंस के लिए उपयोग के मामले क्या हैं?
- 24. skewed सुविधाओं के लिए सबसे उपयुक्त सामान्यीकरण/परिवर्तन विधि?
- 25. प्रक्रिया के लिए उचित उपयोग के मामले क्या हैं। Nxt.js में टिकटें?
- 26. स्कैला 2.8.1 से स्कैला 2.9.1 में मुख्य परिवर्तन क्या हैं?
- 27. मैं स्कैला 2.9 समांतर संग्रह के लिए फोर्क में शामिल पूल को कैसे बदलूं?
- 28. नए विकास के लिए क्लोजर का उपयोग करने के लिए सबसे अच्छे उपयोग के मामले क्या हैं?
- 29. 2.10 के लिए स्कैला 2.9 कंपाइलर प्लगइन माइग्रेट करने पर वहां कोई जानकारी है?
- 30. स्ट्रिंग के साथ स्ट्रिंग्स का सामान्यीकरण। ToUpperInvariant()
मुझे यकीन नहीं है कि मैं इसका उपयोग करूंगा .... लेकिन आप * किसी भी * (अनुरूप) आंशिक समारोह का उपयोग कर सकते हैं ... क्या कहीं और एकीकृत त्रुटि है? ('IgnoreTheseSillyClosableExceptions' कहें।) इसके अलावा," यह बहुत अच्छा है "कि स्कैला इसे इस तरह व्यक्त कर सकता है ;-) –
प्रेरणा के लिए: पॉल फिलिप्स ने इसे लागू करने के दौरान एक प्रेरक उदाहरण प्रदान किया: http://www.scala-lang.org/नोड/8070 –
प्रश्न एक उदाहरण या कम से कम एक लिंक के साथ बेहतर होगा। – ziggystar