与这个答案有关,
如果我真的想要“发射并忘记”一个返回任务的方法,并且(为简单起见)假设该方法不会抛出任何异常。我可以使用答案中列出的扩展方法:
public static void Forget(this Task task)
{
}
使用这种方法,如果Task
的动作中存在导致异常抛出的错误,则当抛出意外异常时,异常将被吞噬并不会被注意到。
问题:在这种情况下,扩展方法是否更适合采用以下形式:
public static async void Forget(this Task task)
{
await task;
}
编程错误会抛出异常并升级(通常导致进程崩溃)。
在存在预期(且可忽略)异常的方法中,该方法需要变得更为复杂(顺便问一下,如何构建一个版本的该方法,以接受可接受和可忽略异常类型的列表?)