web-dev-qa-db-ja.com

終了方法Python関数、終了せずにエラー文を投げるPythonインタプリタ

私はPythonが初めてで、自己定義エラーの処理に苦労しています。私のコードがエラーを見つけたら、赤いフォントでエラーをスローし、Pythonを殺すことなくPythonターミナルに戻してほしい。

Sys.exit()に出会い、答えを探しましたが、Pythonを完全に終了しました。赤いフォントでエラーを返す代替手段を知っていますかandは端末に戻りますか?

これは私がこれまで持っているものです。

import sys
def do_something(parameter):
    if parameter > 100:
        # quit the function and any function(s) that may have called it
        sys.exit('Your parameter should not be greater than 100!')
    else:
        # otherwise, carry on with the rest of the code

明確でない場合はお知らせください。詳細をお知らせいたします。よろしくお願いします!

15
Gyan Veda

(少なくとも)2つのオプションがあります。

returnステートメントの使用:

def do_something(parameter):
    if parameter > 100:
        # display error message if necessary
        return  # 'exit' function and return to caller
    # rest of the code

あなたもすることができます return soemthingsomething値を呼び出し元に返します。これは、たとえばステータスコードを提供するために使用できます(例:0:成功、1:エラー)。

または、より良いアプローチはraise例外です:

def do_something(parameter):
    if parameter > 100:
        raise ValueError('Parameter should...')
    # rest of the code

try:
    do_something(101)
except ValueError, e:
    # display error message if necessary e.g. print str(e)

Pythonマニュアルの exceptions を参照してください。

組み込みの例外クラスがあります(上記のValueErrorなど)。次のように独自に定義することもできます。

class ParameterError(Exception):
    pass

また、カスタム例外クラスにコードを追加して、パラメーターを処理したり、カスタムエラーメッセージを表示したりすることもできます。

組み込みの例外は here にリストされています。

24
isedev

カスタム例外を定義し、発生させます。

class MyError(Exception):
    pass

...

if parameter > 100:
    # quit the function and any function(s) that may have called it
    raise MyError('Your parameter should not be greater than 100!')

(実際には、今私はそれについて考えていますが、組み込み例外を使用することができます:ValueErrorが適切だと思われます)。

0
Daniel Roseman