JetBrains Rider 2025.3 Help

代码检查:避免将 'async' 用于返回值类型为 'void' 且没有 'System.EventArgs' 类型参数的方法和函数

此检查可检测在使用 async 修饰符且返回值类型为 void 的方法和函数中,是否存在不包含 System.EventArgs 类型参数的情况。 不建议使用此类方法,因为其中未处理的异常无法使用 await 进行捕获,可能会导致应用程序崩溃。

public async void Foo(Task<int> task) { Process(await task); } public void Process(int i) {}
public async void Foo(Task<int> task) { try { Process(await task); } catch (Exception e) { throw; // TODO handle exception } } public void Process(int i) {}

快速修复会将 async void 方法的主体包装在 try-catch 块中。 这可确保捕获方法中抛出的所有异常,避免因未处理的异常导致应用程序崩溃。 您可以根据应用程序的具体要求,用自定义错误处理逻辑替换 throw; 语句。

虽然该快速修复通过捕获异常增强了 async void 方法的安全性,但通常更推荐尽可能使用 Task 作为 async 方法的返回值类型,除非在事件处理程序等特定场景中必须使用 void

最后修改日期: 2025年 12月 5日