首页 > 后端开发 > C++ > 在'一劳永逸”的方法中是否应该忽略异常?

在'一劳永逸”的方法中是否应该忽略异常?

Mary-Kate Olsen
发布: 2024-12-28 04:25:15
原创
974 人浏览过

Should Exceptions Be Ignored in a

即发即忘:异常处理的注意事项

这里提出的问题围绕着实现“即发即忘”时异常的适当处理“ 方法。使用简单吞下异常的扩展方法的最初建议引起了人们的关注,因为它可能会掩盖潜在的错误。

但是,如果真正的目的是忽略任务中发生的任何异常,那么异步扩展方法可以不是最优解。等待任务会通过引入对其完成的依赖来破坏“即发即忘”原则。

在这种情况下,最初提出的同步扩展方法会更合适。但是,为了确保妥善处理预期但可忽略的异常,需要该方法的更复杂版本。

例如,以下方法采用一个参数,该参数定义可接受和可忽略的异常类型列表:

public static void Forget(this Task task, params Type[] acceptableExceptions)
{
  try
  {
    task.Wait();
  }
  catch (Exception ex)
  {
    // TODO: consider whether derived types are also acceptable.
    if (!acceptableExceptions.Contains(ex.GetType()))
      throw;
  }
}
登录后复制

这种方法允许选择性地处理异常,确保只传播意外错误。

重要的是请注意,使用此方法并不能真正使任务“即发即忘”,即完全独立于其完成。但是,它提供了一种忽略特定异常的方法,这些异常是任务预期行为的一部分。

以上是在'一劳永逸”的方法中是否应该忽略异常?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板