2015-07-10 8 views
6

सी में, यदि मैं गलत नहीं हूं, तो main कोई त्रुटि नहीं होने पर फ़ंक्शन 0 देता है, और कोई त्रुटि होने पर 0 से भिन्न होती है।कार्यप्रणाली को संभालने में त्रुटि

पायथन में ऐसा करने के लिए उचित है (जब तक कि किसी फ़ंक्शन को किसी विशिष्ट मान को वापस करने की आवश्यकता न हो, लेकिन सफलता/विफलता को इंगित करने के लिए); या इसके बजाय बस अपवादों को संभालें?

+1

नाम के एक समारोह के लिए 'check_blub' /' is_blub' आपको 'ट्रू' या 'गलत' वापस करना चाहिए। अक्सर देखा जाता है कि 'validate_blub' नामक फ़ंक्शन हैं, जो आमतौर पर ValueError फेंकते हैं। – kay

+0

@cdarke आपकी टिप्पणी के लिए धन्यवाद; लेकिन समझें कि मैंने सी नहीं सीखा है :-) –

उत्तर

13

पायथन में आपको त्रुटि इंगित करने के लिए वापसी मान का उपयोग नहीं करना चाहिए। आपको अपवादों का उपयोग करना चाहिए।

तो, या तो अपवाद को छोड़ दें जो बबल को निकाल देता है, या एक नया फेंक देता है।

def check_foo(foo): 
    if foo == bar: 
     do_something(args) 

try: 
    check_foo(...) 
except SomeError: 
    # Oops! Failure! 
    something_went_wrong() 
else: 
    # Yay! Success! 
    everything_went_well() 

कुछ मामलों में यह समझ में आता है कि कार्यों एक बूलियन लौटने के लिए, लेकिन वहत्रुटियों इंगित करने के लिए नहीं किया जाना चाहिए।

यह आमतौर पर नियमित जांच जहां कुछ सही या गलत हो सकता है में प्रयोग किया जाता है, और न तो है असाधारण (यानी न एक त्रुटि है):

def is_foo(foo): 
    return foo == "foo" 
+0

तो किसी शर्त में फ़ंक्शन रिटर्न को शामिल करने के बजाय, कुछ भाषाएं करते हैं, मैं बस सभी कोड निष्पादित करता हूं और फिर त्रुटियों को संभालता हूं। क्या मुझे मिल गया है? –

+0

@ जे.सी.रोकामोंडे हां। और कभी-कभी, त्रुटि होने पर आपके पास बस कोई उचित बात नहीं होती है, उस स्थिति में आप उन्हें बस बुलबुला करते हैं और दुभाषिया को पूरी तरह समाप्त कर देते हैं। –

3

नहीं, आप नहीं करना चाहिए। पाइथन में त्रुटि प्रबंधन के अन्य रूप हैं, और यदि आप वास्तव में एक सफल कोड वापस करना चाहते हैं तो सत्य और गलत बेहतर तरीका है। एक फोन करने वाले के रूप में आप वास्तव में ग्रहण करने के लिए है कि सब कुछ उम्मीद के रूप में चला गया में सक्षम होना चाहिए, और फिर आप अगर कुछ गलत हो गया वर्णनात्मक त्रुटि किसी तरह फेंक कर सकते हैं।

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