1

我正在尝试使用 Pyro4 公开我的课程。问题是我的班级有一个 Pyro4 无法处理的自定义异常。

我尝试过使用序列化,但似乎没有任何效果。

我所拥有的是:

# exception class
class TestException(Expection):
    pass


# test class
@Pyro4.expose
class Test:

   def get_exception(self):
       raise TestException("This is a random exception.")

Pyro4 无法引发 TestException。它给了我一个错误:{SerializedError}不支持的序列化类:TestException

有谁知道如何解决这个问题?

谢谢。

4

1 回答 1

1

你需要告诉 Pyro(或者更确切地说,底层的 Serpent 序列化器)你同意反序列化你的自定义异常类,以及它必须如何做到这一点。根据这一点,您可能还必须确保双方(客户端和服务器)都可以访问定义您的 TestException 类的相同源模块。

这是在文档中。具体来说,https://pyro4.readthedocs.io/en/stable/clientcode.html#chang-the-way-your-custom-classes-are-de-serialized

出于安全原因,这会引发错误并需要程序员的努力。(反序列化从网络收到的随机类是危险的)

最后,在 Pyro 服务器中捕获异常并引发标准 Python 异常之一可能会更容易。

于 2019-04-04T19:21:46.563 回答