class DeviceError(Exception):
def __init__(self,errno,msg):
self.args = (errno, msg)
self.errno = errno
self.errmsg = msg
# Raises an exception (multiple arguments)
raise DeviceError(1, 'Not Responding')
ビーズリー: pg 88
「_ init _() への引数を含むタプルを、 示されているように属性 self.args に割り当てることが重要です。この属性は、例外トレースバック メッセージを出力するときに使用されます。未定義のままにしておくと、ユーザーは見ることができなくなります。エラーが発生したときの例外に関する有用な情報。」
私が行った場合:
try:
....
except DeviceError:
....
ここでは、トレースバックが生成されないため、 self.argsは使用されません - 正しいですか? 何らかの理由で DeviceError を無視した場合、呼び出されたsys.excepthook()関数は Traceback を出力する必要があり、self.args を調べます - 正しいですか? それは何を探しますか?つまり、タプルにランダムな値を詰め込んでいるだけです..デフォルトのエラーハンドラー (フック関数を除く) は、errno と msg を表示する方法をどのように知っていますか?
誰かが self.args で正確に何が起こっているのか説明できますか?それは Python 3.x で使用されていますか?