Python で非常に奇妙な動作に遭遇しました。これは一貫性のない動作です。
...
except IOError as msg:
sys.exit("###ERROR IOError: %s" % (msg))
通常、これにより次のようなメッセージが表示されます。
###ERROR IOError: [Errno 13] Permission denied: 'filename'
同じケースで、上記のコードはtuple
適切なエラー メッセージの代わりに私に与えています。
###ERROR IOError: (13, 'Permission denied')
これは非常に奇妙です。すべての場合において、例外は同じ python メソッドから発生するためです。codecs.open(...)
これについてもっと不思議に思うのは、例外の処理を削除すると、常に正しいテキスト (完全なエラー メッセージ) で上位レベルに到達することです!
except IOError as msg:
print(msg)
raise msg
上記の例では、 のような完全なメッセージが常にIOError: [Errno 13] Permission denied: u'filename'
出力されます。
なぜこれが起こっているのか、どうすればこれを防ぐことができるのか、不完全なエラーメッセージをユーザーに伝えたくありません.
この動作をテスト ファイルで再現したかったのですが、プロジェクトの外では再現できませんでした。
良い結果が得られるがそうではないsys.exit()
ので、それはの使用法と関係があると思います。print(msg)
sys.exit