[Python-Dev] Proposal - KeyboardInterrupt should inherit directly from Exception
Skip Montanaro
skip@pobox.com (Skip Montanaro)
Wed, 07 Nov 2001 16:45:18 +0100
>>>>> "Greg" == Greg Ward <gward@python.net> writes:
Skip> That way, the standard catch all except clause can be
Skip>
Skip> try:
Skip> fragile code
Skip> except StandardError:
Skip> recover
Greg> So "fragile code" would be the main loop of a GUI or server,
Greg> or an eval or exec of user-supplied code (eg. a config file
Greg> that happens to be Python source) -- that sort of thing?
That's precisely the context this arose in here in Vienna. I just
stole Andrew's example from c.l.py because it was easier to paste that
than to type my own.
Greg> Hmmm... does anyone else habitually write
Greg> if __name__ == "__main__":
Greg> try:
Greg> main()
Greg> except KeyboardInterrupt:
Greg> sys.exit("interrupted")
This suggests one other enhancement to me. Just as raising SystemExit
doesn't generate a traceback, perhaps the default handling of
KeyboardInterrupt could be configurable so I could set (for example):
sys.gen_kbi_traceback = 0
sys.gen_kbi_message = 0
to suppress traceback and/or message output without having to do
explicitly catch it. The default for both would be 1 to remain
compatible with current behavior. If you caught the exception, these
would have no effect.
Skip