2017-10-04 65 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