2013-05-18 12 views
10

Jestem raczej nowy dla Pythona i chcę się upewnić, że robię to poprawnie. Chciałbym mieć klasę wyjątek:Czy potrzebuję instrukcji return po wyjątku Pythona?

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

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

będę podnieść wyjątek na końcu tej funkcji, jeśli nie Wyrażenia regularne spotkania:

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 

Moje pytanie brzmi - czy wyjątek jest zawsze podniósł, to czy nie potrzebuję zwrotu na końcu funkcji? Moje przeprosiny ... to bardzo podstawowe pytanie. Rozumiem, że wyjątek po podniesieniu wyjątku, wykonanie nigdy nie powróci do tego punktu kodu (chyba że jest to pętla lub funkcja, która jest wywoływana ponownie). Przejdzie prosto do połowu i dalej od tego?

+0

Twoje zrozumienie jest prawidłowe. –

Odpowiedz

13

Nie, nie. Instrukcja return jest nieosiągalna.

Narzędzia do analizy statycznej, takie jak pyflakes, zgłaszają to jako błąd.

Powiązane problemy