簡體   English   中英

在拉對象而不引發異常時返回錯誤數據?

[英]Returning error data when pulling an object without throwing an exception?

我有一個通常會檢索對象的場景,我們稱它為UserRights。 如果一切正常,則將填充該對象。 但是如果出了問題,我想知道出了什么問題,為什么。 通常,我會引發異常,但是由於各種原因,我無法引發異常。

我正在考慮將兩個字段添加到返回對象中,ErrorCode(int)和ErrorReason(string)。 如果Errorcode == 0,則一切正常,並填充對象。 但是,如果它不為0,則出了點問題,我需要查看ErrorReason以了解原因。

我可以看到的最大問題是,我必須更新每個對象,並且需要調用這些對象來滿足這些額外的字段。

還有其他比這更好的返回錯誤數據的潛在方法嗎?

我不知道您的應用程序架構,因此雖然很難確定,但是您有一些選擇。

選項1

定義一個基類,然后所有其他類都可以從中繼承;

public class MyBase {
    public int ErrorCode { get; set; }
    public string ErrorMessage  { get; set; }

    public MyBase ()
    {
        ErrorCode = 0;
        ErrorMessage = null; // or "";
    }
}

然后,如果您遇到錯誤,則可以將工作限制為僅需要更新這些內容。

但是您必須更新所有其他類才能從中繼承。 (如果您有很多麻煩,那么可以使用下面的選項2)

選項2

如果您僅在少數幾個地方返回結果,則可以在發送響應之前對其進行修改。

定義與上述相同的類,但為響應添加一個額外的屬性。 像這樣

public object MyResponse { get; set; }

然后,當您返回結果時,請創建此類的實例。 如果有錯誤,請更新它們,並將MyResponse保留為空。 否則,將常規響應對象放入MyResponse中並返回它。

選項3

定義與上述相同的類,但不要從其繼承。 更改您的響應,以便您返回通用對象。

返回對象時,返回正確的對象,或者在出現錯誤的情況下僅返回Error對象。

然后,您的接收函數需要確定返回的類的類型並進行處理。

選項4

您可能有單獨的錯誤報告。
當您遇到錯誤時,您只需提供參考號,然后將錯誤記錄在其他位置。

接收器獲取此參考號而不是結果,然后進行查詢以確定實際錯誤是什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM