2010-05-08 19 views
18

में सफल रहे थे, तो अजगर में वहाँ अगर एक कोशिश बयान सफल कि कोशिश बयान अपने आप में नहीं था कोड को चलाने के लिए एक आसान तरीका था मैं सोच रहा था। क्या वह और आखिरकार आदेश क्या करता है (मैं उनके दस्तावेज़ीकरण को समझ नहीं पाया)? मुझे पता है कि मैं इस तरह कोड का उपयोग कर सकता हूं:चल कोड अगर कोशिश बयान अजगर

successful = False 
try: 
    #code that might fail 
    successful = True 
except: 
    #error handling if code failed 
if successful: 
    #code to run if try was successful that isn't part of try 

लेकिन मैं सोच रहा था कि क्या कोई छोटा रास्ता था।

+2

एक नंगे का उपयोग करके '' एक बुरा विचार है। कुछ स्पेसिफिक एरर को छोड़कर 'करना बेहतर है:' और एक विशिष्ट अपवाद को संभालें जिसे आप जानते हैं कि क्या करना है। 'को छोड़कर:' उन सभी अपवादों को पकड़ लेगा जिन्हें आप उम्मीद नहीं करते हैं, जिसमें स्मृति से बाहर चलने वाली चीजें या उपयोगकर्ता को ctrl-c दबाकर शामिल किया गया है। –

उत्तर

30

आप "और" हैं:

for i in [0, 1]: 
    try: 
     print '10/%i: ' % i, 10/i 
    except: 
     print 'Uh-Oh' 
    else: 
     print 'Yay!' 
+0

यय! आखिर में मैंने इसे ठीक कर दिया, मेरे कोड ने प्रिंटिंग सफलता बरकरार रखी, हालांकि अपवाद हो रहा था लेकिन अब मुझे पता है कि आप 'ex' के बाद 'else' का उपयोग कर सकते हैं। – answerSeeker

11

आप else कीवर्ड के लिए देख रहे हैं:

try: 
    #code that might fail 
except SomeException: 
    #error handling if code failed 
else: 
    # do this if no exception occured 
-3

आपका कोशिश ब्लॉक कोड आप निष्पादित करने के लिए चाहते हो सकता है, और अपने को छोड़कर की हत्या किया जाना चाहिए कार्यक्रम। बेहतर जवाब देने के लिए मुझे आपकी ऑब्जेक्ट को बेहतर ढंग से समझना होगा।

OO प्रोग्रामिंग में, आप "बताओ, मत पूछो" के लिए इतना सब तर्क यह है कि कोशिश ब्लॉक में होना चाहिए, और फिर अपने त्रुटि ब्लॉक को छोड़कर में से निपटने रखना चाहते हैं।

+2

मुझे नहीं लगता कि मैं इस उत्तर से सहमत हूं। "आपके सिवाय इसके कि कार्यक्रम को मारना चाहिए" मेरे लिए निगलना विशेष रूप से कठिन है; हमारे पास अपवाद हैंडलिंग है ताकि हम अपवादों को संभाल सकें। यह विशेष रूप से पायथन में सच है जहां अपवादों का उदारतापूर्वक उपयोग किया जाता है और चीजों के लिए एक पुनरावर्तक पर फिर से शुरू करने जैसी चीजों के लिए, एक घटना है कि 99% समय प्रोग्राम-समाप्ति की स्थिति नहीं है। मैं कोशिश/छोड़कर अन्य ब्लॉक के कंबल बर्खास्तगी के पास कहीं भी नहीं आऊंगा, जहां केवल सफलता पर आप कुछ करने के लिए आगे बढ़ते हैं। अन्य चीजों के अलावा, अक्सर ब्लॉकों को कम करने में मदद करता है, जो कि बहुत अच्छा है। –

+0

आप बिल्कुल सही हैं। मैं पिछले 3 हफ्तों के लिए टेस्ट कोड लिख रहा हूं और परिप्रेक्ष्य से संपर्क किया है कि यदि कुछ विफल रहता है तो मैं परीक्षण ढांचे को जानना चाहता हूं। मुझे अभी भी एक और ब्लॉक की आवश्यकता को कम करने में कठिन समय है, ऐसा लगता है कि "इस काम को करने का प्रयास करें ... यदि यह विफल हो जाता है, इसे संभालें" तो उस घटना में होने वाली हर चीज नहीं होनी चाहिए "इस काम को करने का प्रयास करें" खंड में कोई विफलता नहीं है? अब आपके पास तर्क है, फिर तर्क को बाधित कर रहा है, और तब बाधा के बाद तर्क जो केवल तब होता है जब बाधा उत्पन्न नहीं होती है ... –

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