These are attributes for Python exceptions, but I am having trouble wrapping around them. The Python documentation seems pretty calm. I looked through the documentation, but rather confused. So what is the difference between them and how are they used?
EDIT: In this note, how are they related to __traceback__ , if at all?
EDIT 3: I guess I just don't understand __cause__ . I finally understand __traceback__ and __context__ . Why is attribute_error.__cause__ not related to AttributeError() ?
try: raise NameError() from OSError except NameError as name_error: print('name_error.__cause__: %s' % repr(name_error.__cause__)) print('name_error.__context__: %s' % repr(name_error.__context__)) print('name_error.__traceback__: %s' % repr(name_error.__traceback__)) try: raise AttributeError() except AttributeError as attribute_error: print('attribute_error.__cause__: %s' % repr(attribute_error.__cause__)) print('attribute_error.__context__: %s' % repr(attribute_error.__context__)) print('attribute_error.__traceback__: %s' % repr(attribute_error.__traceback__)) raise attribute_error from IndexError
Displays
name_error.__cause__: OSError() name_error.__context__: None name_error.__traceback__: <traceback object at 0x000000000346CAC8> attribute_error.__cause__: None attribute_error.__context__: NameError() attribute_error.__traceback__: <traceback object at 0x000000000346CA88> Traceback (most recent call last): File "C:\test\test.py", line 13, in <module> raise attribute_error from IndexError File "C:\test\test.py", line 8, in <module> raise AttributeError() AttributeError
source share