【发布时间】:2020-09-10 16:11:13
【问题描述】:
根据微软的建议,程序的正常逻辑不应该使用投掷和抓捕。 Minimize exceptions
作为 ASP.Net 核心清洁架构项目的一部分(具有 3 层通用存储库 - BL 服务 - 控制器),应该如何设计和实现错误处理和结果? 是否应该为所有 Api 控制器和 BL 服务使用结构或全局结果类? 如果将错误和结果封装在一个结构中就足够了吗?
WebApi 项目中的结果类示例:
public class ExampleResult<T>
{
public ExampleResult(T value, string message, bool success)
{
(...)
}
}
控制器:
public ActionResult<ExampleResult<NewResourceDto>> Post([FromBody] NewResourceDto myNewResource)
{
try
{
if(!Validate(myNewResource))
return new ExampleResult(null, "some business logic validate failed", true);
ExampleResult result = _service.TrySaveMyNewResource(myNewResource);
return result;
}
catch (Exception ex)
{
// Log the exception here...
return new ExampleResult(null, "some message" + ex, false);
}
}
然后,Angular 客户端会验证该值是否为 null 和/或成功是真还是假。 该消息包含错误消息。 http状态将为200(无论成功与否)。
如何优雅地最小化异常?
【问题讨论】:
标签: c# angular asp.net-core error-handling asp.net-core-webapi