c# - 在 Controller 中的每个方法中都有一个通用的 try/catch 是个好主意还是有更好的方法?

标签 c# filter asp.net-core actionresult

我正在尝试改进我的 MVC.NET Core-fu,最终我的所有 Controller 中都出现了一堆像这样的方法(注意最外面的、一般的、重复的try-catch )。

[HttpPost]
public IActionResult DoSomething([FromBody] Thing thing)
{
  try
  {
    if (...)
      return Ok(thing);
    else
      return NotFound();
  }
  catch (Exception) { return BadRequest(); }
}

在我看来,我希望收到坏人请求,以防万一。现在,这向其他相当简单的 Controller 添加了大量代码,我怀疑以前有人想到过这一点并提出了解决方案。

我还没有找到这样的东西(并且我被告知过滤器在 Core 中的使用已经过时)。可能是因为我不熟悉正确的搜索键。

最佳答案

这对我来说似乎太过分了。许多方法不会执行可能失败的指令。对于那些极其罕见的情况,全局错误处理程序就足够了。

对于那些访问磁盘、数据库或执行可能引发异常的计算的方法(您可能应该首先避免这种情况),try...catch block 是有意义的.

但即使在这些情况下,如果带有 try...catch 处理程序的方法调用另一个方法,则没有理由将处理程序放入另一个方法中。

关于c# - 在 Controller 中的每个方法中都有一个通用的 try/catch 是个好主意还是有更好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48179086/

相关文章:

c# - 努力单元测试 Entity Framework 6.1.3 DB-first

python - Django Admin 仅按反向外键查找中的第一个对象按功能/过滤器过滤

带有 TypeScript 和注入(inject)的 AngularJS 过滤器

list - 使用过滤器迭代列表

visual-studio - 在不使用 Visual Studio 的情况下将基于 project.json 的项目添加到 .sln 文件

c# - 如何确定一个数组是另一个数组的一部分?

c# - 我如何使用 OpenHardwareMonitor 库获取 cpu 风扇速度?

asp.net-core - Visual Studio 2015 看不到我的 xunit 测试

c# - 静态 XML 的缓存问题

azure - 使用 Azure Key Vault 中的 secret 替换 VSTS JSON 变量