2024-10-03 02:46:05 发布
网友
我想创建一个错误消息和相应错误代码的列表(并不意味着PythonList)。我有两个要求-能够查找给定错误代码的错误消息和能够执行相反的查找。在
List
似乎您不需要“error message”->;“error code”映射。您可以创建一个包含错误代码和消息的异常类。它将允许在不破坏任何代码的情况下对消息进行本地化。在
例如,OSError具有errno,strerror属性,这些属性包含相应的错误代码和消息。在
OSError
errno
strerror
为了更方便地捕捉错误,您可以为常用的错误代码创建子类,例如,OSError具有子类,如PermissionError,FileNotFoundError:
PermissionError
FileNotFoundError
try: open(somefile) except FileNotFoundError: # handle file not found error except PermissionError: # handle permission problem
Python是一种动态语言,因此可以很容易地从当前用于错误代码、消息的表示中以编程方式生成异常类。在
通常,您将使用一对dicts-one将错误代码映射到消息,然后使用反向映射(通常以编程方式生成)另一个错误代码。在
dict
error_codes_to_messages = { 1: 'foo', 2: 'bar', 3: 'baz', } error_messages_to_codes = dict( (v,k) for k,v in error_codes_to_messages.iteritems() )
然后可以使用[]进行查找:
[]
或者您可以只收集一组错误代码对象,因为这不太可能成为性能瓶颈:
errors = [Error1, Error2, Error3, ...] def lookupError(number=None, text=None, matcher=None, multiple=False): if number!=None: matcher = lambda x:x.number==number if text!=None: matcher = lambda x:text in x.text results = [e for e in errors if matcher(e)] if multiple: return results else: assert len(results)==1, 'Error lookup failed, expected one error but got {}'.format(results) return results[0]
用法:
似乎您不需要“error message”->;“error code”映射。您可以创建一个包含错误代码和消息的异常类。它将允许在不破坏任何代码的情况下对消息进行本地化。在
例如,
OSError
具有errno
,strerror
属性,这些属性包含相应的错误代码和消息。在为了更方便地捕捉错误,您可以为常用的错误代码创建子类,例如,
OSError
具有子类,如PermissionError
,FileNotFoundError
:Python是一种动态语言,因此可以很容易地从当前用于错误代码、消息的表示中以编程方式生成异常类。在
通常,您将使用一对
dict
s-one将错误代码映射到消息,然后使用反向映射(通常以编程方式生成)另一个错误代码。在然后可以使用
^{pr2}$[]
进行查找:或者您可以只收集一组错误代码对象,因为这不太可能成为性能瓶颈:
用法:
^{pr2}$相关问题 更多 >
编程相关推荐