2017-10-04 13 views
1

私はtinycss2のparse_declaration_list関数を使って、cssを解析しています。無効な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

トレースバックを投稿できますか? 'try/except'は既に_everything_を捕捉するはずです。 –

+0

おそらく、それは内部で捕まえられてから印刷され、あなたの呼び出しに戻ります。 –

答えて

1

documentationは、エラーは発生していませんが、返されます。すなわち、try/exceptはここでは機能しません。代わりに、最後のアプローチで行うように、結果をチェックする必要があります。ただし、ParseErrorExceptionのサブクラスではないようです。また、リストの最初の要素だけをチェックすることはできません。このような(試していない)試してみることができます:

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

ありがとう!私はほとんどそこに行く。私は "isinstance(結果、tinycss2.ast.ParseError)"を試してみましたが、動作しませんでしたので、私はそのタックをあきらめました。 – vorpal

関連する問題