2011-08-05 5 views
2

例外が発生した場合、followin関数が "1"を返す理由を説明してください。 "1"を返す目的は何ですか?私の意見で例外があるときにPython関数が1を返します

def initialize(): 
    """ 
    Starting point for the program. 
    """ 
    try: 
     go = Car() 
     print "Instance of Car created" 
    except KeyboardInterrupt: 
     return 1 
+3

KeyboardInterruptの場合に "1"を戻すことは良い考えだと思っていたので、... –

+0

コンテキストがなければ、あなたの推測は私たちと同じくらい良いです。このスニペットが埋め込まれている一般的なプログラムの詳細を提供してください。 –

+0

これは一般的なPythonのコンセプトだと思っていましたが、例外があるときに "1"を返します。 – alwbtc

答えて

4

エラーの場合にゼロ以外の値を返すのは、C言語ではかなり一般的なイディオムです。

ここでは、この関数を作成した人がC言語でプログラミングするのに慣れていて、例外処理には慣れていないことがわかりました。より大きいコードサンプルを使わないと言うのは不可能ですが、私が正しいとすれば、おそらくこの関数が1を返す場合にこの関数が呼び出されるエラーハンドリングや、ゼロ以外の値があります。

この場合、例外を使用するより適切な方法は、raiseを使用して例外を上に渡して他の場所で処理するか、関数のどこかで例外を処理することです。

+0

Ctrl + Cを押すとKeyboardInterruptが発生します。 Carクラスのインスタンスを作成するには数ミリ秒かかるだけなので、なぜここにKeyboardInterrupt例外が挿入されたと思いますか?ユーザーは、そのミリ秒でCtrl + Cを押すかもしれないと思っていますか? – alwbtc

+0

@alwbtc:コードを見ずにどれくらい時間がかかるか教えてくれませんでした。 Carクラスがビルドされている間に、プログラムを無限ループやそれに類するものに詰まらせるバグがあったかもしれません。これは、デバッグツールとして使用されている可能性があります。 – Swiss

0

はカー()コンストラクタは時間がかかりすぎる場合にのみ、これを実行する必要はありません、あなたはそれ一度initialize()リターンに対処したいと思います。

関連する問題