通常情況下,我會做由Jon的建議,但如果你真的不想讓任何例外冒泡從你的服務,你可以封裝你的成功和(任意)在一類結構類似這樣的
public class ErrorInfo
{
public string Message {get; set;}
// TODO: Maybe add in other information about the error?
}
public class SaveResult
{
public bool Success { get; set; }
/// <summary>
/// Set to contain error information if Success = false
/// </summary>
public ErrorInfo ErrorInfo { get; set; }
}
然後失敗錯誤信息......
public SaveResult SaveData(Stream stream)
{
SaveResult saveResult = new SaveResult();
string error = "";
try
{
//do saving data
saveResult.Success = true;
}
catch (Exception ex)
{
saveResult.ErrorInfo = new ErrorInfo { Message = ex.Message };
}
}
這種方法的缺點是您的呼叫者必須在致電SaveData
後檢查Success
值。不這樣做可能會導致代碼中的錯誤,只有在保存失敗時纔會出現。如果調用者忘記顯式處理任何異常,那麼它會冒泡調用堆棧並使應用程序崩潰,或者使應用程序崩潰,或者使應用程序崩潰被更高級別的錯誤處理代碼所捕獲。
不一定是理想的,但總體上比你的代碼更好地默認假設某事成功了,而事實上它並沒有成功。
什麼是最後的塊點? – Baz1nga
@ Baz1nga:對不起,沒有得到你。 –
爲什麼麻煩設置'error =「」',然後'+ ='成功/異常消息? –