pythonの例外キャッチ。
会社のRed Hatのpythonバージョンが2.6だ。
python2.6は例外クラスからメッセージを取得するとき、
messageを参照するとWarningが出力される。
python2.6
>>> e = Exception('Hello, Exception!')
>>> e.message
__main__:1: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6
'Hello, Exception!'
python2.7
>>> e = Exception('Hello, Exception!')
>>> e.message
'Hello, Exception!'
python3.6
>>> e = Exception('Hello, Exception!')
>>> e.message
Traceback (most recent call last):
File "
AttributeError: 'Exception' object has no attribute 'message'
対処
python2.6ではmessageを呼び出すと廃止予定が表示される。
python2.7ではmessageを呼び出した際の廃止予定が表示されなくなった(表示したいときはpythonの引数に-Wdや-W errorを指定する)。
python3.6ではmessageは廃止された。
例外の中身はmessageから取得せずに、単純に__str__で取得すれば良いようだ。
>>> 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に変換
コメントを残す