मैं हाल ही में पता चला है कि आप मामले में कुछ कोड की एक पंक्ति पर rescue
उपयोग कर सकते हैं कि लाइन पर गलत हो जाता है (http://www.rubyinside.com/21-ruby-tricks-902.html टिप # 21 देखें)। मैं कुछ कोड है कि इस तरह देखने के लिए प्रयोग किया जाता है:रूबी oneline बचाव
if obj['key'] && obj['key']['key2'] && obj['key']['key2']['name']
name = obj['key']['key2']['name']
else
name = ''
end
rescue
विधि के साथ
, मेरा मानना है कि मैं कुछ इस तरह कि कोड बदल सकते हैं: एक शून्य अपवाद किसी में फेंक दिया जाता है, तो
name = obj['key']['key2']['name'] rescue ''
हैश तक पहुंचने का स्तर, इसे बचाव से पकड़ा जाना चाहिए और मुझे '' देना चाहिए, जो मैं चाहता हूं। यदि वे वांछित व्यवहार थे तो मैं nil
पर नाम सेट करना भी चुन सकता था।
वहाँ ऐसा करने में किसी भी ज्ञात खतरा है? मैं पूछता हूं क्योंकि यह सच होने के लिए बहुत अच्छा लगता है। मेरे पास इतना बदसूरत कोड है कि मैं उस से छुटकारा पाने के लिए प्यार करता हूं जो पहले कोड उदाहरण जैसा दिखता है।
कि विशेष रूप से उपयोग के लिए, एक इनलाइन 'बचाव सुरक्षित है * बहुत * सावधान एक विधि कॉल, जहां कुछ और शायद एक I/O त्रुटि, या डेटाबेस में जानकारी मौजूद नहीं की वजह से, एक अपवाद बढ़ा सकता है के अंत में इसे का उपयोग किया। उन स्थितियों को डीबग करना सचमुच, वास्तव में कठिन है और आपको पागल बना सकता है। –