【问题标题】:throw exception through mbean operation通过mbean操作抛出异常
【发布时间】:2012-09-11 05:15:08
【问题描述】:

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

【问题讨论】:

    标签: java exception jmx


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 有什么办法可以在不实际...嗯...抓住它并重新扔掉它的情况下得到它?就像“给我所有的错误,伙计!”
    猜你喜欢
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    相关资源
    最近更新 更多