コードインスペクション:戻り値の型が "void" のメソッドや関数では "async" を使用しない("async void" メソッドや関数で例外を再スローしない)
このインスペクションは、 async void メソッドまたは関数で例外が再スローされ、アプリケーションのクラッシュにつながる可能性のあるケースを識別します。 async Task メソッドや async Task<T> メソッドとは異なり、 async void メソッドの例外は直接待機されず、同期コンテキストまたは未処理の例外ハンドラーに伝播されます。 この動作により、アプリケーションプロセス全体が終了する可能性があります。
class Example
{
async void FaultyMethod()
{
try
{
await Task.Delay(100);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
throw; // Warning: Can crash the process
}
}
}
実行時のクラッシュを回避するには、 throw; ステートメントを適切な例外処理に置き換えます。
可能であれば、例外処理と保守性を向上させるために、非同期メソッドの戻り値の型として Task または Task<T> を使用することも検討してください。
2026 年 6 月 12 日