2013-05-18 11 views
10

मैं पाइथन के लिए नया हूं, और मैं यह सुनिश्चित करना चाहता हूं कि मैं इसे सही तरीके से कर रहा हूं। अपवाद हमेशा है अगर -क्या मुझे पाइथन अपवाद के बाद रिटर्न स्टेटमेंट चाहिए?

def cmdType(self): 
    match = re.match(r'(<[ \w]+>),\s*(\d+)?,?\s*(\d+)?', cmd, re.IGNORECASE) 
    if match: 
     cmd_type = 'int_tool' 
     return cmd_type, match 

    match = re.match(r'LCD\(([^\)]*)\)?_?(RED|YELLOW|GREEN|TEAL|BLUE|VIOLET|OFF|ON|SELECT|LEFT|DOWN|RIGHT)?', cmd, re.IGNORECASE) 
    if match: 
     cmd_type = 'lcd' 
     return cmd_type, match 

    match = re.match(r'buffer(_read|_num|_line)(\((\w)\))?', cmd, re.IGNORECASE) 
    if match: 
     cmd_type = 'buffer' 
     return cmd_type, match 

    # ... More regex matches ... 

    raise UnknownCommandReceived("cmdType received an unknown command") 

    # unecessary return? 
    return 'None', None 

मेरा प्रश्न है:

class UnknownCommandReceived(Exception): 
    def __init__(self, value): 
     self.value = value 

    def __str__(self): 
     return repr(self.value) 

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

+0

आपकी समझ सही है। –

उत्तर

13

नहीं, आप नहीं करते हैं। return कथन पहुंच योग्य नहीं है।

इसके अलावा, स्थिर विश्लेषण उपकरण, जैसे pyflakes एक त्रुटि के रूप में रिपोर्ट करेंगे।

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