3

関数に含まれていないコードがあります。

x = 5
y = 10
if x > 5:
    print("stopping")

コードがそれ以上実行されないようにするには、print ステートメントの後に何を置くことができますか? Sys.exit() は機能しますが、プログラムで望ましくないエラーが発生します。メインループの最後に到達したかのようにコードを静かに停止させたい。ありがとう。

4

5 に答える 5

12

JBernardo が指摘したようにsys.exit()、例外が発生します。この例外はSystemExitです。ユーザーコードによって処理されない場合、インタープリターは正常に終了します (たとえば、プログラムをデバッグするデバッガーは、このメカニズムのおかげで、プログラムをキャッチしてプログラムの制御を維持できます) os._exit()。プログラム。

はから継承しないため、この例外はによってキャッチされexcept Exception:ません。しかし、むきだしの節に捕まる。SystemExitExceptionexcept:

そのため、プログラムで例外が発生した場合は、except Exception:代わりにexcept:. そうは言っても、すべての例外をキャッチすることはお勧めできません。これにより実際の問題が隠される可能性があるため、可能であればexcept句を (もしあれば) より具体的にすることで避けてください。

このSystemExit例外メカニズムが有用である理由についての私の理解は、ユーザー コードが句で見つかったfinallyに任意の句を通過することです。ファイルはきれいに閉じることができます。次に、インタープリターは、ユーザーによってキャッチされなかったものをすべてキャッチし、完全に終了します (代わりに、デバッガーがそれをキャッチして、インタープリターの実行を維持し、終了したプログラムに関する情報を取得します)。sys.exit()exceptSystemExit

于 2013-04-28T03:09:09.767 に答える
2

sys.exit()これはsys.exit(0)、成功して終了することを意味します。sys.exit(1)またはsys.exit("Some message")失敗して終了することを意味します。どちらの場合もSystemExit例外が発生します。sys.exit(0)実際、プログラムが正常に存在する場合、呼び出されたのとまったく同じです。

于 2013-04-28T03:22:45.163 に答える
-1

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

エラーが発生したにもかかわらず、エラーは出力されませんでした。

于 2013-04-28T02:45:53.650 に答える