克服“即发即忘”的危险
在异步编程领域,通常希望执行任务而不必监控他们的进度或处理他们可能提出的异常。 “Fire and Forget”方法旨在实现这一目标,但其实现可能会引发对错误处理的担忧。
异常吞没的困境
当使用“即发即忘”扩展方法只是忽略异常,任务执行中的任何错误都可能被忽视,从而可能导致灾难性后果。为了解决这个问题,这个问题提出了一种等待任务的替代方法,确保抛出异常并升级。
“Fire and Forget”的语义
然而,重要的是要认识到“真正的”“即发即忘”方法意味着完全无视任务的结果。换句话说,我们对它何时完成、成功还是失败不感兴趣。这种理念在现实场景中很少实用。
“Fire and Forget”的异常处理
如果我们希望在保持“Fire and Forget”方法的同时仍然处理特定的异常,该问题提出了一种替代扩展方法,可以接受可接受的异常类型列表。此方法允许我们等待任务,但仅在遇到不可接受的错误时抛出异常。
结论
决定是否使用传统的“Fire”并忘记”方法或具有异常处理的修改版本取决于所需的语义。如果确保异常检测至关重要,则建议使用修改后的方法。但是,如果首选真正独立执行而无需异常处理,则原始方法仍然是更好的选择。
以上是您应该'一劳永逸”异步任务,还是处理异常?的详细内容。更多信息请关注PHP中文网其他相关文章!