我想拋出一個具有特定名稱的異常,並且這種異常已經存在於雙面打包中。從雙面軟件包中拋出異常是否正確?
E.g. UnexpectedException
in java.rmi
。我沒有使用rmi packege的任何設施,但是例外的名稱是,正好是我需要的。
我可以在我自己的上下文中拋出異常,或創建一個具有相同名稱的新異常。哪種方法更好?
我想拋出一個具有特定名稱的異常,並且這種異常已經存在於雙面打包中。從雙面軟件包中拋出異常是否正確?
E.g. UnexpectedException
in java.rmi
。我沒有使用rmi packege的任何設施,但是例外的名稱是,正好是我需要的。
我可以在我自己的上下文中拋出異常,或創建一個具有相同名稱的新異常。哪種方法更好?
僅僅因爲名稱是正確的並不意味着其他任何東西。看的說明中,例如:如果一個遠程方法調用的客戶端接收,
的UnexpectedException拋出作爲呼叫,檢查異常不是在拋出聲明的經檢查異常類型中的結果遠程接口中方法的子句。
這是否實際上描述你的例外試圖代表什麼?我懷疑不是。假設你是一個客戶端 - 你會想知道爲什麼地球上你不得不趕上(或聲明)與RMI有關,儘管你的代碼庫沒有與RMI相關。奇怪的是會在整個代碼中傳播。伊克。
當您查看例外的完全限定名稱時,java.rmi
是其名稱的一部分。考慮一個程序員使用你的代碼閱讀來期待java.rmi
的異常,這可能會引起一陣眉毛,因此是一個壞主意。
考慮到這個例外,特別是:是什麼意外?您可以改爲命名您的班級UnexpectedSomethingException
,使其更清楚地發生了什麼。
@Jon Skeet和@akaIDIOT已經提供了相當不錯的答案。我只會添加幾個與您的問題相關的示例:
這將是奇怪和困惑從擁有無關,與RMI方法處理java.rmi.UnexpectedException
。
另請注意,例外的主要目的是允許客戶端代碼處理您無法處理的情況。因此,方法拋出java.io.IOException
的事實意味着客戶端代碼應負責處理意外的文件輸入 - 輸出錯誤(重新檢查文件訪問/存在,基本設置)。投擲方法java.rmi.UnexpectedException
給客戶端代碼提示以檢查RMI設置
我已經更新了我的答案,謝謝。我很高興我沒有用逗號代替'和'。這將是尷尬。 – 2013-03-13 16:08:39
我強烈建議不要重複使用另一個異常,因爲它只是基於它共享所需名稱的事實。例如,在RMI的上下文之外拋出一個java.rmi.UnexpectedException將會非常令人困惑。
我不確定你打算如何使用你的異常,但對我來說,完全基於名字,聽起來像你可以使用java.lang.RuntimeException,因爲它具有相同的一般含義。
所以,我的建議是按以下順序:
用相同的名稱創建並使用它。 – 2013-03-13 16:05:15