Python で SyntaxError を自前で投げる

Python で SyntaxError を自前で raise するには次のようにする。

raise SyntaxError("エラーメッセージ", (ファイル名, 行番号, カラム桁数, ソース行))

やってみる。

>>> raise SyntaxError("ERROR MESSAGE", ('foo.py', 123, 2, 'x = 999'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "foo.py", line 123
    x = 999
     ^
SyntaxError: ERROR MESSAGE

ほほう。

SyntaxError を継承したクラスでもいいようだ。

>>> class TemplateSyntaxError(SyntaxError):
...    pass
...
>>> raise TemplateSyntaxError("ERROR MESSAGE", ('foo.py', 123, 2, 'x = 999'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "foo.py", line 123
    x = 999
     ^
__main__.TemplateSyntaxError: ERROR MESSAGE

ほほう。これは使える。


#注意:undocumented らしいので、将来使えなくなっても文句は言わない。