MBean操作的正确异常处理策略是什么?其中一些操作可能会失败(例如,删除未连接的用户)并且应报告异常,但我不知道我的异常如何渗透到JMX层。我最好的想法是C风格的返回码。
答案 0 :(得分:5)
这是javax.management.MBeanException的意图,它被声明为从MBeanServerConnection.invoke抛出。引用JavaDoc:
表示由MBean方法引发的“用户定义”异常 剂。它“包装”了抛出的实际“用户定义”异常。
所以不要返回神秘的整数代码,(或BigDecimal如果越大越好;))只是捕获“业务异常”,使用业务异常创建一个新的MBeanException并抛出它。如果您的业务异常是可序列化的并且存在于调用者的类路径中,则调用者应该能够解开JMX异常并进入业务异常。
如果其中任何一个假设不成立,只需根据业务异常类名称和消息创建一条消息,并从新的异常创建一个MBeanException(这样就可以获得堆栈跟踪)和新的错误消息。