関数に含まれていないコードがあります。
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:ません。しかし、むきだしの節に捕まる。SystemExitExceptionexcept:
そのため、プログラムで例外が発生した場合は、except Exception:代わりにexcept:. そうは言っても、すべての例外をキャッチすることはお勧めできません。これにより実際の問題が隠される可能性があるため、可能であればexcept句を (もしあれば) より具体的にすることで避けてください。
このSystemExit例外メカニズムが有用である理由についての私の理解は、ユーザー コードが句で見つかった後finallyに任意の句を通過することです。ファイルはきれいに閉じることができます。次に、インタープリターは、ユーザーによってキャッチされなかったものをすべてキャッチし、完全に終了します (代わりに、デバッガーがそれをキャッチして、インタープリターの実行を維持し、終了したプログラムに関する情報を取得します)。sys.exit()exceptSystemExit
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
エラーが発生したにもかかわらず、エラーは出力されませんでした。