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

时间:2014-07-03 05:50:13

标签: c# asp.net-mvc repository-design

我有一个网络应用程序和一个将交易记录设置为“完成”的存储库。要求是在存储库级别检查是否已将其他用户设置为“已完成”,此时,通知当前用户该记录已设置为“已完成”。

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

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

2 个答案:

答案 0 :(得分:1)

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

而是有一个响应RepositoryResponse类,如下所示,您可以填写详细信息并将其返回到另一层中处理。

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

    public string ErrorMessage { get; set; }
}

答案 1 :(得分:0)

我只会返回一个enum因为你为什么要抛出异常呢? 没有出现错误,所以不需要抛出异常恕我直言

这里是云的样子:

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

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