attributes in the instance object raisedusually in custom class constructor for simpler needsbuilt-in exception superclasses provide constructor that stores its arguments on the instance automatically (as tuple in the attribute argsin exception handlersyou list variable to be assigned to the raised instancethen go through this name to access attached state information and call any methods defined in the class the error message text in class-based exceptions can be specified with custom __str__ operator overloading method for simpler needsbuilt-in exception superclasses automatically display anything you pass to the class constructor operations like print and str automatically fetch the display string of an exception object when it is printed either explicitly or as part of an error message because guido said so--they have been removed as of both python and there are arguably good reasons for thisstring-based exceptions did not support categoriesstate informationor behavior inheritance in the way class-based exceptions do in practicethis made string-based exceptions easier to use at first when programs were smallbut more complex to use as programs grew larger the downsides of requiring exceptions to be classes are to break existing codeand create forward knowledge dependency--beginners must first learn classes and oop before they can code new exceptionsor even truly understand exceptions at all in factthis is why this relatively straightforward topic was largely postponed until this point in the book for better or worsesuch dependencies are not uncommon in python today (see the preface and conclusion for more on such things exception objects