pythonの例外キャッチ。
会社のRed Hatのpythonバージョンが2.6だ。
python2.6は例外クラスからメッセージを取得するとき、
messageを参照するとWarningが出力される。
python2.6
1 2 3 4 | >>> e = Exception('Hello, Exception!') >>> e.message __main__:1: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6 'Hello, Exception!' |
python2.7
1 2 3 | >>> e = Exception('Hello, Exception!') >>> e.message 'Hello, Exception!' |
python3.6
1 2 3 4 5 | >>> e = Exception('Hello, Exception!') >>> e.message Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'Exception' object has no attribute 'message' |
対処
python2.6ではmessageを呼び出すと廃止予定が表示される。
python2.7ではmessageを呼び出した際の廃止予定が表示されなくなった(表示したいときはpythonの引数に-Wdや-W errorを指定する)。
python3.6ではmessageは廃止された。
例外の中身はmessageから取得せずに、単純に__str__で取得すれば良いようだ。
1 2 3 4 5 | >>> e = Exception('Hello, Exception!') >>> print(str(e)) Hello, Exception! >>> print('catch:[{0}]'.format(e)) catch:[Hello, Exception!] |
この方法だと、python2.6, 2.7, 3.6で問題なく実行できる。
formatで出力するようにすれば、付随情報もついでに出力して、エラーを解析しやすいよな気がする。
同じタグの記事
- BOM付きUTF-8からBOMを除去するpython
- jythonのヒープメモリ設定
- Kotlin1.2.50がリリースされていた
- macOSをHigh Sierraに更新した。スクリプト実行環境のバージョンは変わったのか
- macOSをMojaveに更新した。スクリプト実行環境のバージョンは変わったか
- pathlib.Pathを調べる
- pyenvでpython環境をインストール
- pyenvとvirtualenvでpython環境を構築
- python unpack
- python3で数値のlistを文字列のlistに変換
同じカテゴリの記事