0

で言うserver.py

import rpyc

class MyError(Exception):
    def __init__(self, message):
        super(MyError, self).__init__(message)
        self.error = message

    def foo1(self):
        self.error_type = 1

    def foo2(self):
        self.error_type = 2


class MyService(rpyc.Service):
    def exposed_test(self):
        e = MyError('error')
        e.foo1()
        return e


if __name__ == '__main__':
    from rpyc.utils.server import ThreadPoolServer

    server = ThreadPoolServer(MyService(), port=6000)
    server.start()

では、次のようclient.pyに基づいてさまざまな手順を実行したいと考えています。error_type

import rpyc

with rpyc.connect('localhost', 6000) as conn:
    try:
        raise conn.root.test()
    except Exception as e:
        if e.error_type == 1:
            pass
        else:
            pass

ただし、コンパイラは言う

Traceback (most recent call last):
  File "C:/python/client.py", line 5, in <module>
    raise conn.root.test()
TypeError: exceptions must derive from BaseException

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/python/client.py", line 7, in <module>
    if e.error_type == 1:
AttributeError: 'TypeError' object has no attribute 'error_type'

そのようなオブジェクトのメンバー変数にアクセスするにはどうすればよいですか? Exceptionに変えてもダメでしたBaseException

更新:次のように変更client.pyしました:

import rpyc

with rpyc.connect('localhost', 6000) as conn:
    e = conn.root.test()
    print(e)
    print(e.error_type)

. print(e)「エラー」が出力されたので正しくなりましたが、まだ取得できませんe.error_type

4

0 に答える 0