[Python-Dev] Exception Reorg PEP checked in

Nick Coghlan ncoghlan at gmail.com
Thu Aug 4 13:03:05 CEST 2005

Brett Cannon wrote (in the PEP):
> KeyboardInterrupt inheriting from ControlFlowException
> KeyboardInterrupt has been a contentious point within this hierarchy. Some
> view the exception as more control flow being caused by the user. But with
> its asynchronous cause thanks to the user being able to trigger the
> exception at any point in code it has a more proper place inheriting from
> CriticalException. It also keeps the name of the exception from being
> "CriticalError".

I think this argues against your own hierarchy, since you _did_ call the 
parent exception CriticalError. By your argument above, that suggests 
KeyboardInterrupt doesn't belong there ;)

In practice, whether KeyboardInterrupt inherits from ControlFlowException or 
CriticalError shouldn't be a big deal - the important thing is to get it out 
from under Exception and StandardError.

At which point, the naming issue is enough to incline me towards christening 
it a ControlFlowException. It gets all the 'oddly named' exceptions into one 

Additionally, consider that a hypothetical ThreadExit exception (used to 
terminate a thread semi-gracefully) would also clearly belong under 
ControlFlowException. That is, just because something is asynchronous with 
respect to the currently executing code doesn't necessarily make it an error 
(yes, I know I argued the opposite point the other day. . .).


Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia

More information about the Python-Dev mailing list