で言う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