如何捕获python中的非致命错误

时间:2017-10-04 13:03:17

标签: python error-handling tinycss

我正在使用解析css的tinycss2中的parse_declaration_list函数。当我给它无效的css时,它返回[< ParseError无效>]。但是,我不能为我的生活弄清楚如何实际捕获这个错误。

我试过了:

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()

对不起,没有办法。我完全难倒了,而且谷歌的一切都是关于正常,表现良好的错误。

1 个答案:

答案 0 :(得分:1)

documentation表示错误未引发,但已返回,即try/except将无效。相反,您必须检查结果,就像在上一个方法中一样。但是,ParseError似乎不是Exception的子类。此外,您可能不能只检查列表的第一个元素。您可以尝试这样的事情(未经测试):

result = parse_declaration_list(arg)
if any(isinstance(r, tinycss2.ast.ParseError) for r in result):
    do_something()