関数に含まれていないコードがあります。
x = 5
y = 10
if x > 5:
print("stopping")
コードがそれ以上実行されないようにするには、print ステートメントの後に何を置くことができますか? Sys.exit() は機能しますが、プログラムで望ましくないエラーが発生します。メインループの最後に到達したかのようにコードを静かに停止させたい。ありがとう。
関数に含まれていないコードがあります。
x = 5
y = 10
if x > 5:
print("stopping")
コードがそれ以上実行されないようにするには、print ステートメントの後に何を置くことができますか? Sys.exit() は機能しますが、プログラムで望ましくないエラーが発生します。メインループの最後に到達したかのようにコードを静かに停止させたい。ありがとう。
JBernardo が指摘したようにsys.exit()
、例外が発生します。この例外はSystemExitです。ユーザーコードによって処理されない場合、インタープリターは正常に終了します (たとえば、プログラムをデバッグするデバッガーは、このメカニズムのおかげで、プログラムをキャッチしてプログラムの制御を維持できます) os._exit()
。プログラム。
はから継承しないため、この例外はによってキャッチされexcept Exception:
ません。しかし、むきだしの節に捕まる。SystemExit
Exception
except:
そのため、プログラムで例外が発生した場合は、except Exception:
代わりにexcept:
. そうは言っても、すべての例外をキャッチすることはお勧めできません。これにより実際の問題が隠される可能性があるため、可能であればexcept
句を (もしあれば) より具体的にすることで避けてください。
このSystemExit
例外メカニズムが有用である理由についての私の理解は、ユーザー コードが句で見つかった後finally
に任意の句を通過することです。ファイルはきれいに閉じることができます。次に、インタープリターは、ユーザーによってキャッチされなかったものをすべてキャッチし、完全に終了します (代わりに、デバッガーがそれをキャッチして、インタープリターの実行を維持し、終了したプログラムに関する情報を取得します)。sys.exit()
except
SystemExit
sys.exit()
これはsys.exit(0)
、成功して終了することを意味します。sys.exit(1)
またはsys.exit("Some message")
失敗して終了することを意味します。どちらの場合もSystemExit
例外が発生します。sys.exit(0)
実際、プログラムが正常に存在する場合、呼び出されたのとまったく同じです。
try-except ステートメントを使用します。
a = [1, 2, 3, 4, 5]
for x in xrange(0,5):
try:
print a[x+1] #this is a faulty statement for test purposes
except:
exit()
print "This is the end of the program."
出力:
> python test.py
2
3
4
5
エラーが発生したにもかかわらず、エラーは出力されませんでした。