如何在 python 中捕获非致命错误
how to catch a non-fatal error in python
我正在使用 tinycss2 中的 parse_declaration_list 函数来解析 css。当我给它 invalid css 它 returns []。但是,我一辈子都想不出如何真正捕捉到这个错误。
我试过:
try:
parse_declaration_list(arg)
except:
do_something()
没有骰子。
try:
parse_declaration_list(arg)[0]
except:
do_something()
没有。
try:
parse_declaration_list(arg)
except ParseError:
do_something()
还是没有
error = parse_declaration_list(arg)[0]
if isinstance(error, Exception):
do_something()
对不起,没办法。我完全被难住了,我 google 提出的所有内容都是关于正常的、行为良好的错误。
documentation indicates that the error is not raised, but returned, i.e. try/except
won't work here. Instead, you have to check the result, as you do in your last approach. However, ParseError
似乎不是 Exception
的子类。此外,您可能不能只检查列表的第一个元素。您可以尝试这样的操作(未测试):
result = parse_declaration_list(arg)
if any(isinstance(r, tinycss2.ast.ParseError) for r in result):
do_something()
我正在使用 tinycss2 中的 parse_declaration_list 函数来解析 css。当我给它 invalid css 它 returns [
我试过:
try:
parse_declaration_list(arg)
except:
do_something()
没有骰子。
try:
parse_declaration_list(arg)[0]
except:
do_something()
没有。
try:
parse_declaration_list(arg)
except ParseError:
do_something()
还是没有
error = parse_declaration_list(arg)[0]
if isinstance(error, Exception):
do_something()
对不起,没办法。我完全被难住了,我 google 提出的所有内容都是关于正常的、行为良好的错误。
documentation indicates that the error is not raised, but returned, i.e. try/except
won't work here. Instead, you have to check the result, as you do in your last approach. However, ParseError
似乎不是 Exception
的子类。此外,您可能不能只检查列表的第一个元素。您可以尝试这样的操作(未测试):
result = parse_declaration_list(arg)
if any(isinstance(r, tinycss2.ast.ParseError) for r in result):
do_something()