try/exceptでプログラムを終了させるには?

こんなtry/exceptコードがあるんです。

document = raw_input ('Your document name is ')

try:
    with open(document, 'r') as a:
        for element in a:
           print element

except:
    print document, 'does not exist'

ファイル名が存在しません」と表示された後、プログラムを終了するにはどうしたらいいですか? breakpassは明らかに機能しませんし、クラッシュエラーは発生したくないので、sys.exit` はオプションではありません。

トライの部分は無視してください。

sys.exitを使用します。

import sys

try:
    # do something
except Exception, e:
    print >> sys.stderr, "does not exist"
    print >> sys.stderr, "Exception: %s" % str(e)
    sys.exit(1)

発生したExceptionを出力しておくと、その後のデバッグに便利です。

また、traceback モジュールを使用すると、スタックトレースを表示することができます。

sys.exitで返すintは、プログラムのリターンコードになることに注意してください。あなたのプログラムがどんな終了コードを返したかを見るには(何が起こったかについての情報を得ることができ、自動化することができます)、次のようにするとよいでしょう。

echo $?
解説 (0)

使用方法

sys.exit(1)

はクラッシュエラーではなく、プログラムを終了するための完全に正常な方法です。終了コード1というのは、何か問題があったことを意味する慣習です(正常に実行された場合は0を返します)。

解説 (2)

また、コードを関数に入れ、リターンを発行することもできます。スクリプトから呼び出すことができるmainと呼ぶこともできます。

def main():
    document = raw_input ('Your document name is ')

    try:
        with open(document, 'r') as a:
            for element in a:
               print element

    except:
        print document, 'does not exist'
        return

if __name__ == "__main__":
    main()
解説 (5)