2017-12-22 8 views
1

私は自分自身に "キーワード"について思い出させていましたが、私はこの記事http://effbot.org/zone/python-with-statement.htmを見つけました。私はちょうど、おそらく明らかな質問をしていました。記事では、これは「」__exit__嚥下タイプエラー

def __exit__(self, type, value, traceback): 
    return isinstance(value, TypeError) 

私はかなりそれがそうであるか見ていないよ「任意の例外TypeErrorを飲み込ん」と述べていますか?簡単な説明があれば幸いです。

+0

['__exit__'のドキュメントにはこれが記述されています。](https://docs.python.org/3/reference/datamodel.html#object.__exit__) –

答えて

3

句からTrueを返すと、すべてのエラーが処理されなくなります。たとえば、次のように

class Foo(): 
    def __enter__(self): 
     print("enter") 
    def __exit__(self, type, value, tb): 
     print("exit with", repr(value)) 
     return True 

with Foo(): 
    print("inside") 
    raise ValueError() 

意志出力

enter 
inside 
exit with ValueError() 

なく__exit__()Trueを返したため、何かを上げます。例の場合

発生したエラーがTypeErrorであれば、文:

Trueを返し、TypeErrorは「飲み込まれる」ことになります。

関連する問題