繁体   English   中英

引发异常或引发域事件?

[英]Throwing exception or raising a domain event?

考虑以下代码:

public class Article : AbstractEntity<Article> {    

    // ...

    public void AppendFeedback(Feedback feedback) {
        var quota = this.FeedbacksQuota ?? this.DefaultFeedbacksQuota;            
        if(this.Feedbacks.Count >= quota) {
            throw new ApplicationException("message");
        }
        this.Feedbacks.Add(feedback);
    }

    // ...
}

所以我不知道超过配额后如何通知用户。 抛出异常对我来说似乎很糟糕。 是使用domain events的正确地方吗? (示例值得赞赏,尤其是在ASP.NET MVC application上下文中)。

我应该在哪里收集/处理消息?

谢谢!

如果您的反馈配额是不变的(业务规则),那么可以例外。

您可以随时添加以下方法:

public bool CanAddFeedback
{
    get { return this.Feedbacks.Count < quota; }
}

在添加之前检查是否允许反馈,以便您可以返回有意义/用户友好的消息。

可以在添加了包含剩余配额等的反馈时引发域事件。

暂无
暂无

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

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