如何在 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()