我在ASP.NET MVC中制作web项目。每个控制器调用服务来做一些操作。让我们来看看示例
public interface IProjectService
{
bool ActivateProject(int projectId);
//others
}
实施了课程
public class ProjectService : IProjectService
{
private readonly IContextProvider _contextProvider;
public ProjectService(IContextProvider contextProvider)
{
_contextProvider = contextProvider;
}
public bool ActivateProject(int projectId)
{
using (var context = _contextProvider.GetContext())
{
var project = context.Projects.Where(p => p.ProjectId == projectId).SingleOrDefault();
project.Status = 1;
context.SaveChanges();
return true;
}
}
//others
}
在示例中,管理员想要激活项目。我在jQuery中进行了验证,因此管理员除了projectId之外不能传递任何东西。
那么现在应该返回这个方法呢? 我应该把它留空吗? 让我们说数据库有错误,所以我应该抛出异常吗?这种操作的实践是什么?
答案 0 :(得分:2)
作为一般规则,您不应使用异常来处理标准执行流程。例外情况用于不应发生事情的情况。
据说,有一条边界线,异常和返回值很合适,这只是一个品味问题。
异常通常会提供更大的灵活性,因为您可以抛出不同的异常类型并使用单个try / catch处理它们。他们还提供了更多信息。布尔值并没有说明发生了什么。
如果你返回一个布尔值,你应该处理方法中的异常,至少在某处记录错误细节。
如果出现问题,我会亲自抛出异常并让调用者处理它。