2010-02-16 128 views
1

我正在服務導向架構中使用另一項服務。我的服務使用其他服務將數據保存到數據庫中。對我來說,重新拋出我從保存服務中獲得的異常是很好的做法,或者我應該捕獲異常並將其封裝在結果中,然後將結果發送回去。拋出異常或返回值

回答

2

我喜歡用於封裝調用結果的Result類型的想法。我不知道您使用的是什麼語言或框架,但我使用C#泛型類型Result<T>,它表示調用的結果,它表示結果狀態,可選消息,可選結果類型(如T所示),和一個可選的Exception實例(所以如果我處於開發或調試場景中,我可以發出原始異常)。

從安全角度來看,讓您的異常詳細信息向初始化客戶端冒泡,因爲您可能會無意中暴露有關您的應用程序或您的某個依賴關係的內部操作的敏感信息。此外,它看起來很糟糕,而且消費者更難以使用。如果某個資源可能失敗,最好將該調用包裝在try/catch中,並通過異常策略路由任何異常,並返回一個否定結果,而不是讓客戶端崩潰。

+0

謝謝你。至於我使用Java 1.4的語言 – pete