繁体   English   中英

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

[英]Should a repository throw custom exceptions or return a status type?

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

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

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

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

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

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

    public string ErrorMessage { get; set; }
}

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

这是一个关于云的示例:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM