Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 存储库应该抛出自定义异常还是返回状态类型?_C#_Asp.net Mvc_Repository Design - Fatal编程技术网

C# 存储库应该抛出自定义异常还是返回状态类型?

C# 存储库应该抛出自定义异常还是返回状态类型?,c#,asp.net-mvc,repository-design,C#,Asp.net Mvc,Repository Design,我有一个web应用程序和一个将事务记录设置为“完成”的存储库。要求是在存储库级别检查另一个用户是否已将要求设置为“完成”,如果已设置,则通知当前用户记录已设置为“完成” 我应该抛出自定义异常还是返回状态类(带有状态枚举和消息集合) 存储库(a类服务)的调用者处理存储库调用并将结果包装到DTO到UI…抛出异常并捕获它不是一种更好的做法,因为每当异常发生时,在处理之前,它会为.Net framework添加一些额外的工作来收集所有信息,如Stacktrace,来源和大量其他信息 取而代之的是一个re

我有一个web应用程序和一个将事务记录设置为“完成”的存储库。要求是在存储库级别检查另一个用户是否已将要求设置为“完成”,如果已设置,则通知当前用户记录已设置为“完成”

我应该抛出自定义异常还是返回状态类(带有状态枚举和消息集合)


存储库(a类服务)的调用者处理存储库调用并将结果包装到DTO到UI…

抛出异常并捕获它不是一种更好的做法,因为每当异常发生时,在处理之前,它会为.Net framework添加一些额外的工作来收集所有信息,如Stacktrace,来源和大量其他信息

取而代之的是一个response RepositoryResponse类,如下所示,您可以填写详细信息并将其返回到不同的层中处理

class RepositoryResponse
{
    public bool IsSuccess { get; set; }

    public string ErrorMessage { get; set; }
}
我只想返回一个,因为为什么要抛出异常?
没有出现错误,因此不需要抛出异常IMHO

以下是it云的外观示例:

public myenum RepositoryMethod()
{
   if(alreadyDone())
     return myenum.AlreadyDone;

   try
   {
       return myenum.Done;
   }
   catch(ex)
   {
       return myenum.ERROR;
   }
} 

您应该记录异常并返回status类。@SamyS.Rathore IMO不需要记录,因为这不是真正的异常,就像您想打扫房间,有人已经为您完成了工作。@WiiMaxx我知道这不是异常,实际上是预期的行为。但一般来说,存储库不应该只报告某个事务是否成功完成。如果用户有兴趣知道出了什么问题,他应该能够在日志文件中看到。@SamyS.Rathore当然可以,但如果这是一个预期的行为,那么没有什么问题,对吗?所以在我看来,这不值得记录。实际上,最好的选择是返回一个带有状态枚举和额外信息的特定类。