从模型返回错误
本文关键字:错误 返回 模型 | 更新日期: 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; }
}