title: Calling a hook function every time an Exception is raised
body: <p>Let's say I want to be able to log to file every time any exception is raised, anywhere in my program. I don't want to modify any existing code. </p>
  
  <p>Of course, this could be generalized to being able to insert a hook every time an exception is raised.</p>
  
  <p>Would the following code be considered safe for doing such a thing?</p>
  
  <pre><code>class MyException(Exception):
  
      def my_hook(self):
          print('---&gt; my_hook() was called');
  
      def __init__(self, *args, **kwargs):
          global BackupException;
          self.my_hook();
          return BackupException.__init__(self, *args, **kwargs);
  
  
  def main():
      global BackupException;
      global Exception;
  
      BackupException = Exception;
      Exception = MyException;
  
      raise Exception('Contrived Exception');
  
  
  if __name__ == '__main__':
      main();
  </code></pre>