2012-09-10 237 views
2

什麼是MBean操作正確的異常處理策略?其中的一些操作可能會失敗(例如降誰不連接的用戶)和異常應被報道,但我不知道我的例外是如何滲透到JMX層。我最好的想法是C風格的返回碼。拋出異常

回答

5

這就是javax.management.MBeanException的意圖,從MBeanServerConnection.invoke拋出該聲明。若要從JavaDoc中引用:

三個代表「用戶自定義」由 代理的MBean方法拋出的異常。它「拋棄」拋出的實際「用戶定義」異常。

因此,而不是返回神祕的整數代碼(或BigDecimal的,如果是越大越好;))只是陷阱「業務異常」,創建使用業務異常的新MBeanException並把它。前提是你的業務異常的序列化和存在於呼叫者的classpath中,調用者應該能夠解開的JMX異常,並獲得了業務異常。

如果其中一個假設是不正確的,只是創建一個基於業務異常類名和消息的消息,並從一個新的異常(所以你得到一個堆棧跟蹤)和新的錯誤信息創建一個MBeanException。

+0

有沒有什麼辦法讓這實際上不......嗯......抓住它,並重新把它扔?就像「給我所有的錯誤,男人!」 – rogerdpack