1

私はPythonが初めてで、例外の経験はありませんが、すべてのドキュメントを読んで答えを見つけることができませんでした. たとえば、次の場合:

try:
    x = 2
except GreaterThanOne:
    print("The value is greater than one")

この場合、メッセージを出力したいのですが、入力された値が 1 より大きい場合に発生するように GreaterThanOne クラス (例外) を定義する方法はありますか?


わかりました、もっと具体的にしましょう...

すべてのエラーは、エラー属性に追加する必要がある特定のルールによって発生します。例えば:

try:
    myvalue = x / y
except ZeroDivisionError:
    print("Some error message printed ...")

したがって、このコードを使用して y を 0 に入力すると、例外 ZeroDivisionError が発生します...たとえば、ZeroDivisionError を再定義してこのように発生させることはできますが、y が ... 2 または 3 またはその他の値に設定されている場合は?

入力:

x = 10
y = 2
try:
    myvalue = x / y
except ZeroDivisionError:
    print("division by 2")

出力:division by 2

4

2 に答える 2

5

理解に役立つ例を次に示します。これを Python インタープリターで実行し、 を呼び出したときに例外がどのように発生してキャッチされるか (またはキャッチされないか) を確認しますset_val(2)

# Defining our Exception subclass:
class GreaterThanOne(Exception):
    pass

# The global value we pretend to care about:
val = 0

# Function to set a value but possibly raise our new Exception 
def set_val(new_val):
    if new_val > 1:
        raise GreaterThanOne("%d > 1" % new_val)
    val = new_val

# Catching exception:
try:
    set_val(0)
    set_val(1)
    set_val(2)
except GreaterThanOne:
    print "Whoops - one of those values was greater than one"

# Not catching exception:
set_val(0)
set_val(1)
set_val(2)
set_val(3)
于 2013-04-13T00:14:44.083 に答える