ブランケットexcept
を使用するのではなく、代わりにキャッチを使用する必要がありException
ます。
try:
myFunction()
except Exception:
print "Error running myFunction()"
Exception
クラスは、ほとんどの例外の基本クラスですが、そうではありません SystemExit
。GeneratorExit
および と一緒にKeyboardInterrupt
、代わりにSystemExit
のサブクラスです。BaseException
BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
+-- Everything else
Exception
一方、 は のサブクラスでもBaseException
あり、残りの Python 例外クラスは、直接ではなく、そこから派生していBaseException
ます。キャッチException
すると、派生したすべての例外がキャッチされますが、兄弟クラスはキャッチされません。
例外階層を参照してください。
そのため、ブランケットステートメントはほとんど使用しないでください。except:
例外ハンドラーを常に特定の例外に制限するか、せいぜいcatchに制限してくださいException
。