2017-10-04 92 views
1

我使用解析css的tinycss2中的parse_declaration_list函数。当我给它无效的css时,它返回[< ParseError invalid>]。但是,我不能为了我的生活而弄清楚如何真正发现这个错误。如何捕捉python中的非致命错误

我已经试过:

try: 
    parse_declaration_list(arg) 
except: 
    do_something() 

没有骰子。

try: 
    parse_declaration_list(arg)[0] 
except: 
    do_something() 

nope。

try: 
    parse_declaration_list(arg) 
except ParseError: 
    do_something() 

仍然没有

error = parse_declaration_list(arg)[0] 
if isinstance(error, Exception): 
    do_something() 

对不起,没有做不到的。我完全被难住了,我的一切事情都是关于正常,行为错误的东西。

+1

你可以发布追踪? '尝试/除了'应该赶上_everything_。 –

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

谢谢!我差点去那里。我试过了“isinstance(result,tinycss2.ast.ParseError)”,但它没有起作用,所以我放弃了这个方针。 – vorpal