BaseExceptionなんていうのがあるのね

ExceptionじゃKeyboardInterruptは拾えないの? - Bouldering & Com.で基底クラスのはずのExceptionでKeyboardInterruptがキャッチできない!って書いたけど、よくわかんなかったので、ソースをみたら、BaseExceptionとかいうのを継承してるように見えたので、試してみたらキャッチできた。

In [135]: try:
    raise KeyboardInterrupt('happen!', 'hello!')
except BaseException , e:
    print e.__repr__()
   .....: 
KeyboardInterrupt('happen!', 'hello!')

BaseExceptionだとキャッチできるのね。BaseExceptionでキャッチするのがいいか悪いかはまた別の話として。スワローキャッチになりそうだから、ちゃんとしたコードでは使わんのだろうと思うけど。

全ての組み込み例外はこのクラスから導出されています。

http://www.python.jp/doc/2.4/lib/module-exceptions.html

って書いてあるけど、KeyboardInterruptは組み込み例外じゃないんかいな。違いがわかんないです!