2017-12-31 29 views
0

私は、fun_a()がエラーなしで正しく実行され、 、次にfun_b()が実行されるような方法で呼び出したいユーザー定義関数を記述しました。エラーなしで実行された場合にのみ複数の関数を呼び出す

一方、エラーが発生した場合、スクリプトを終了し、スクリプトが壊れたというエラーメッセージをfun_a()に返します。

+2

は、 "すべてのエラー" を定義します。 'fun_a'が例外を発生させた場合、プログラムはとにかく停止します。それでは、「あらゆる誤り」はどういう意味ですか? –

+0

'fun_a()'が例外を発生させた瞬間から 'fun_a()'の後に 'fun_b()'を書くことができます。 –

答えて

3

これは、あなたが二つ以上の機能でこれを行うにしたい場合は、あなたがそれらをループできるよう

try: 
    fun_a(): 
except Exception as e: 
    print "An error has occurred: {}".format(e) 
else: 
    fun_b() 

try-except-elseブロックで行われ、1にエラーが発生した場合にループを切断することができます。

コメントで述べたように
functions = [fun_a, fun_b, fun_c] 

for function in functions: 
    try: 
     function() 
    except Exception as e: 
     print "An error has occurred while running {0}: {1}".format(function, e) 
     break 

、それだけでエラーが代わりにそれを処理し、プログラムを手動で停止するので、とにかくプログラムを停止させた方が良いかもしれません。

+0

「else」、いい仕事について知らなかった –

+0

@JoeIddon [これを見る](https://shahriar.svbtle.com/the-possibly-forgotten-optional-else-in-python-try-statement) –

+1

"複数の"機能が2つ以上の機能を備えていたらどうしますか? –

-1

を実行し、この:

try: 

    fun_a(): 
except Exception, BaseException as e: 
    print(f'An error has occurred: {f}') 
else: 
    fun_b() 
+0

このコードは機能しません。 'fun_a()'の後に予期しないコロンがあり、 'Exception、BaseException as e'はできません。 'f 'とは何ですか?エラーが発生しました:{f}' 'やっていますか? –

関連する問題