2012-09-10 217 views
2

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

回答

5

这就是javax.management.MBeanException的意图,从MBeanServerConnection.invoke抛出该声明。若要从JavaDoc中引用:

三个代表“用户自定义”由 代理的MBean方法抛出的异常。它“抛弃”抛出的实际“用户定义”异常。

因此,而不是返回神秘的整数代码(或BigDecimal的,如果是越大越好;))只是陷阱“业务异常”,创建使用业务异常的新MBeanException并把它。前提是你的业务异常的序列化和存在于呼叫者的classpath中,调用者应该能够解开的JMX异常,并获得了业务异常。

如果其中一个假设是不正确的,只是创建一个基于业务异常类名和消息的消息,并从一个新的异常(所以你得到一个堆栈跟踪)和新的错误信息创建一个MBeanException。

+0

有没有什么办法让这实际上不......嗯......抓住它,并重新把它扔?就像“给我所有的错误,男人!” – rogerdpack