1. what are exceptions and how errors propagate through the call stack
2. try except else finally, forms of except, except ordering and 'raise'
3. exception class hierarchy and Exception.mro - avoid bare except
4. Exception _init_
5. chaining exceptions and why we chain them with 'from'
6. Instantiating Exceptions and self.args
7. Traceback Objects and super()
Mistakes:
'super' is a function provided by 'builtins' or '__builtins__' (py2)
NameError is generated when a name is not defined like x.a where x doesn't exist in the current Namespace. AttributeError is when the lookup of 'a' fails.
It's Foo.mro() to display the mro for a class or Foo.__mro__ There is NO mro() provided by 'builtins'