从模型返回错误

本文关键字:错误 返回 模型 | 更新日期: 2023-09-27 18:37:13

我有以下模型:

   internal static List<Contracts.DataContracts.Report> GetReportsForSearch(string searchVal, string searchParam)
    {
        var param1 = new SqlParameter("@SearchVal", searchVal);
        var ctx = new StradaDataReviewContext2();
        var reports = new List<Contracts.DataContracts.Report>();
        try 
        {
    //Validate param1 here and return false if the requirment are not met
        }
    catch(Exception e)
    {
    //Throw
    }
}

param1 here 是用户输入的值,我想在这里验证它,如果不满足要求,我想返回错误。

但是如何从模型返回错误呢?该方法的类型是List,我不能只用这种方法写return false

任何建议如何做?

从模型返回错误

不满足要求时,您没有考虑抛出异常是件好事。我们不应该使用异常来控制程序流。

我想到两个选择:

1. 使用对象

GetReportsForSearch方法修改为以下签名:

internal static List<Contracts.DataContracts.Report> GetReportsForSearch(string searchVal,
                                                      string searchParam, ReportRequestor requestor)
{
    var param1 = new SqlParameter("@SearchVal", searchVal);
    var ctx = new StradaDataReviewContext2();
    var reports = new List<Contracts.DataContracts.Report>();
    try 
    {
        //Validate param1 here and call RequirementsAreNotMet method if the requirements are not met
        requestor.RequirementsAreNotMet();
    }
    catch(Exception e)
    {
    //Throw
    }
}

然后你可以在ReportRequestor类中实现负责处理这种情况的代码

public class ReportRequestor
{
    public void RequiremenrsAreNotMet()
    {
        //code which handle situation when requiremenets are not met
    }
}

2. 使用返回类型作为状态指示器

这样,当不满足要求时,您应该创建ReportGenerationStatus标志设置为 false HasResult对象。在其他情况下,只需将HasResult设置为 true,并相应地设置结果。这在某种程度上模仿了函数式语言中已知的Option类型

internal static ReportGenerationStatus GetReportsForSearch(string searchVal, string searchParam)
{
    //code for your method
}
public class ReportGenerationStatus
{
    public List<Contracts.DataContracts.Report> Result { get; set; }
    public bool HasResult { get; set; }
}