1
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 で使用されていますか?

4

1 に答える 1