使用未找到的实体调用服务操作

时间:2015-03-07 18:02:31

标签: c# domain-driven-design repository-pattern

我正在使用Domain Driven Design (DDD)

我在我的应用服务IUserService上执行了以下操作:

public void EnableUser(int userId)
{
    var user = userRepository.SelectById(userId);
    if (user == null)
    {
        //??
    }

    user.Enabled= true;
    userRepository.Save(usuario);
}

我应该抛出自定义异常吗? 如果是,我应该在自己的应用程序结构中将自定义异常放在哪里?

1 个答案:

答案 0 :(得分:1)

如果您的UserService无法处理用户不存在的情况,那么无论如何都会抛出异常。我认为创建自定义异常有助于区分其他可能的异常,在这种情况下,如何处理它们将在该异常类型的处理程序中指定。

处理异常的位置取决于系统的设计方式。你不希望它们被处理到目前为止上下文丢失。对于此示例,如果启用用户是按钮单击或其他用户操作的结果,则启动该调用的事件或方法应该最有可能处理在出现问题时发生的任何异常,并正确通知用户并记录什么发生了。