2

MBean 操作的正确异常处理策略是什么?其中一些操作可能会失败(例如删除未连接的用户)并且应该报告异常,但我不知道我的异常如何渗透到 JMX 层。我最好的想法是 C 风格的返回码。

4

1 回答 1

5

这就是javax.management.MBeanException的意图,它被声明为从MBeanServerConnection.invoke抛出。引用 JavaDoc:

表示代理中的 MBean 方法抛出的“用户定义”异常。它“包装”了实际抛出的“用户定义”异常。

因此,与其返回神秘的整数代码(或 BigDecimal,如果越大越好;))只是捕获“业务异常”,使用业务异常创建一个新的 MBeanException 并抛出它。如果您的业务异常是可序列化的并且存在于调用者的类路径中,那么调用者应该能够解开 JMX 异常并获得业务异常。

如果这些假设中的任何一个不正确,只需根据业务异常类名称和消息创建一条消息,然后从一个新异常(这样您就可以得到一个堆栈跟踪)和新的错误消息中创建一个 MBeanException。

于 2012-09-10T21:15:08.963 回答