假设我正在构建一个 ASP.NET Web API 应用程序,它具有以下结构:
从图中可以看出,ASP.NET Web API 核心将与域服务层(例如,MembershipService
具有、 等方法的类)对话,而我的服务类将与一个或多个存储库对话以处理操作。GetUsers
CreateUser
很明显,服务操作(例如MembershipService.CreateUser
方法)会由于多种原因(未满足的条件、存储库抛出的异常等)而失败,这就是我有疑问的地方。
您是否认为服务类应该处理异常并返回某种结果对象,例如以下对象:
public class OperationResult {
public OperationResult(bool isSuccess) : this(isSuccess) {
IsSuccess = isSuccess;
}
public OperationResult(bool isSuccess, Exception exception) : this(isSuccess) {
Exception = exception;
}
public bool IsSuccess { get; private set; }
public Exception IsSuccess { get; private set; }
}
public class OperationResult<TEntity> : OperationResult {
public OperationResult(bool isSuccess)
: base(isSuccess) { }
public OperationResult(bool isSuccess, Exception exception)
: base(isSuccess, exception) { }
public TEntity Entity { get; set; }
}
还是您认为服务方法不应该像那样抽象异常,而应该直接或间接抛出异常(创建一个新的有意义的异常类型特定于操作并将抛出的异常作为其内部异常)?