Python はじめました:raise 文

Python.use(better) # Python はじめました記事一覧
raise 文

《著》小粒ちゃん+α《監修》小泉ひよ子とタマゴ倶楽部
第0版♪2001/03/02 ● 第1版♪2003/05/25 ● 第2版♪2004/06/01 ● 第3版♪2009/02/28

raise 文〈Python 3.0 版〉

% python3.0
>>> "ABC".index("@")
Traceback (most recent call last):
  File "", line 1, in 
ValueError: substring not found

ここでは、メソッド index の引数に指定した文字列 "@" が存在しないので、例外 ValueError を生成して、エラーメッセージを出力します。また、例外は raise 文を使っても生成できます。

■ 事例
def index(s, t):
    if t in s:
        return s.index(t)
    else:
        raise ValueError("{0!r} not found".format(t))

% python3.0 -i ex.py 
>>> index("ABC","C")
2
>>> index("ABC","@")
Traceback (most recent call last):
  File "", line 1, in 
  ...
    raise ValueError("{0!r} not found".format(t))
ValueError: '@' not found

関数 index は、引数 s に引数 t が含まれるときには、メソッド index に準拠しますが、そうでないときは、例外 ValueError を生成するとともに、エラーメッセージを出力します。

ファイル〈Python 2.x 版〉

def index(s, t):
    if t in s:
        return s.index(t)
    else:
        raise ValueError,"%r not found"%t

% python2.6 -i ex26.py 
>>> index("ABC","C")
2
>>> index("ABC","@")
Traceback (most recent call last):
  File "", line 1, in 
  ...
    raise ValueError,"%r not found"%t
ValueError: '@' not found

《Note》Python 3.0 では、構文規則の改訂に伴い、次のように、

% python3.0 -i ex26.py 
  ...
    raise ValueError,"%r not found"%t
                    ^
SyntaxError: invalid syntax

例外 SyntaxError を生成して、エラーメッセージを出力します。

Last updated♪09/03/10