2017-02-09 1 views
2

サブスクリプションリストモジュールを作成しようとしています。だから、私は、ユーザーの電子メールIDに応じて、範囲外のエラーのインデックスをスローすることがあります声明があります。もしそうであれば、私はプログラムに何かをしたい、そうでなければ私はプログラムを完全に別のものにしたい。私はこれについてどうやって行くのですか?現在、私はすべてのユーザーを無関係に追加しようとし、プログラムをクラッシュさせるコードを持っています。私は、何のIndexErrorがなかった場合は、言ってここにブロックを追加し、「do something」の部分を省略してelse一部を行うことができるようにする必要がありpython try-exceptにelseブロックステートメントを入れることはできますか?

try: 
    check_for_email_id.from_database 
except IndexError: 
    create.user_id.in_database 
    user.add.to.subscribe_list 

else: 
    user.add.to.subscribe_list 

:私は理想的に持っているしたいことは、このようなものです。 Pythonはこれに対してinbuiltオプションを提供しますか? Try-Except文でif-elseブロックを使用できますか?

また、user.add.to.subscribe_listのコードを2回書くのを避けるための良い方法はありますか。新しいuser_add関数を作成する以外の方法はありますか?

答えて

1

はい、Pythonでelseは(他の/最後に)以外/試みる文は正確にそのためのものです:への答えで

import random 
try: 
    1/random.randrange(2) 
except Exception as e: 
    print(e) 
else: 
    print('we succeeded!') 
finally: 
    # always prints 
    print('we just tried to do some division!') 

:あなたは例外がないだけ場合が起こるたいもの

try: 
    check_for_email_id.from_database 
except IndexError: 
    create.user_id.in_database 
finally: 
    # this gets called if there was an error or not 
    user.add.to.subscribe_list 
+1

だから、コードの冗長性を回避するために、それは別の質問であるべきか、私は答えはここに期待することができます:あなたの2番目の質問は、それはあなたが本当に欲しいもののように見えますがfinally句を使用することですか? あなたの答えに感謝します。それが助けになりました。 –

+0

@ Di437これを 'finally'節に入れれば' else'はなく、エラーがあった場合に呼び出されます。私は何を意味するかを示すために編集を追加します。 – rofls

関連する問題