2013-05-18 35 views
10

Tôi khá mới với python, và tôi muốn chắc chắn rằng tôi đang làm điều này một cách chính xác. Tôi muốn có một lớp ngoại lệ:Tôi có cần câu lệnh trả về sau một ngoại lệ Python không?

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

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

tôi sẽ nâng cao ngoại lệ ở phần cuối của chức năng này nếu không regexes trận đấu:

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 

Câu hỏi của tôi là - nếu ngoại lệ luôn luôn là lớn lên, sau đó tôi không cần một tuyên bố trở lại vào cuối chức năng? Lời xin lỗi của tôi .. đó là một câu hỏi rất cơ bản. Sự hiểu biết của tôi là một ngoại lệ khi một ngoại lệ được nâng lên, việc thực thi sẽ không bao giờ trở lại điểm đó của mã (trừ khi một vòng lặp của nó, hoặc một hàm được gọi lại). Nó sẽ đi thẳng đến bắt và tiếp tục từ đó?

+0

Hiểu biết của bạn là chính xác. –

Trả lời

13

Không, bạn không có. Tuyên bố return không thể truy cập được.

Ngoài ra, các công cụ phân tích tĩnh, chẳng hạn như pyflakes sẽ báo cáo đó là lỗi.

Các vấn đề liên quan