私は試してみた...私のコードでブロックを除くと例外がスローされたとき。その場合でも、コードを続行したいのですが、それでもすべてを正常に実行できます。問題は、except:blockを空のままにするか#doを何も指定しないと構文エラーになることです。ループに入っていないのでcontinueは使えません。私が使うことのできるキーワードがあり、それはコードにそのまま続けるように伝えますか?
except:
pass
Pythonの標準の "nop"はpass
ステートメントです。
try:
do_something()
except Exception:
pass
except
の代わりにexcept Exception
を使用すると、SystemExit
、KeyboardInterrupt
などの例外をキャッチできなくなります。
Python 2では最後にスローされた例外が記憶されているため、例外をスローするステートメントに含まれるオブジェクトのいくつかは無期限に(実際には、次の例外まで)存続しています。これがあなたにとって重要で、(通常)最後にスローされた例外を覚えておく必要がない場合は、pass
の代わりに次のようにします。
try:
do_something()
except Exception:
sys.exc_clear()
これにより、最後にスローされた例外がクリアされます。
Python 3では、except
ブロックを終了すると、例外インスタンスを保持する変数は削除されます。変数が以前に値を保持していたとしても、except
ブロックを出入りした後には、未定義になります。
Python 3.4では、これを行うための新しい方法があります。
from contextlib import suppress
with suppress(Exception):
# your code
これが追加されたコミットです。 http://hg.python.org/cpython/rev/406b47c64480
そしてここに作者、Raymond Hettingerがあり、これと他のあらゆる種類のPythonの熱さについて話しています(43:30の関連ビット): http://www.youtube.com/watch?v= OSGv2VnC0go
except
という裸のキーワードをエミュレートし、KeyboardInterrupt
のようなことを無視したいのであれば(通常はそうではありませんが)、with suppress(BaseException)
を使用することができます。
編集:ignored
は3.4リリースの前にsuppress
に改名されたようです。
これを試して:
try:
blah()
except:
pass