この質問にはすでに答えがあります。
私は試してみた...私のコードでブロックを除くと例外がスローされたときその場合でも、コードを続行したいのですが、それでもすべてを正常に実行できます。問題は、except:blockを空のままにするか#doを何も指定しないと構文エラーになることです。ループに入っていないのでcontinueを使用することはできません。私が使うことのできるキーワードはありますか?
except:
pass
Pythonの標準の "nop"はpassステートメント:
try:
do_something()
except Exception:
pass
を使うexcept Exception裸の代わりにexceptのような例外をキャッチしないでくださいSystemExit、KeyboardInterrupt等
Python 2では最後にスローされた例外が記憶されているため、例外をスローするステートメントに含まれるオブジェクトのいくつかは無期限に(実際には、次の例外まで)存続しています。これがあなたにとって重要で、(通常)最後にスローされた例外を覚えておく必要がない場合は、代わりに次のようにします。pass:
try:
do_something()
except Exception:
sys.exc_clear()
これにより、最後にスローされた例外がクリアされます。
Python 3では、例外インスタンスを保持する変数は次のようになります。削除しました終了時にexceptブロック。変数が以前に値を保持していたとしても、exceptブロックになる未定義再び。
exc_clearPython 3で削除されました。docs.python.org/3/whatsnew/3.0.html#index-22。 Python 3でこれに対処するいくつかの方法はこちらを参照してください。cosmicpercolator.com/2016/01/13/… - bcattle
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に改名されましたsuppress3.4リリースより前
try...catch: passそのため、ブロック内で例外が発生した場合は、ブロックの終了後に実行が継続されます。 - Jack O'Connorwith suppress(TypeError): return data[0](長い例:pastebin.com/gcvAGqEP) - Airwith suppress(Exception)2017-09では、try / exceptのほうがパフォーマンスが良いためです。このコミットを確認する「修正#27818 - try / except / passをcontextlib.suに置き換えました…」 - stackoverYC
これを試して:
try:
blah()
except:
pass
while True:try:f = open(' filedoesnotexist.txt') `except:passKeyboardInterruptはコードを停止して終了します。 - Chthonic ProjectexceptKeyboardInterruptを含む、あらゆる例外をキャッチしますが、それが内部で発生した場合のみです。try。この例では、KeyboardInterruptは、tryまたはの中except捕まえられなかった場合、次のような例を実行するとwhile True:try: passexcept: passKeyboardInterruptが約50%の確率で検出されていることがわかります。もし、あんたがtime.sleep(1)の中tryあなたはそれがほぼ毎回捕まることに気付くでしょう。 - Jack O'Connor