非同期処理を行っているときに、AggregateException
というよくわからない例外が発生しました。
これについて以下のページで詳しく解説されていました。
非同期処理、並列処理を行っている場合、例外が同時に発生する可能性があるため、タスク内で発生した例外は AggregateException
に集約され、その中の InnerException
に実際に発生した例外が格納されるようです。
そして、その AggregateException
は Wait
や Result
を呼び出したときに投げられるようです。await
を使っている場合は発生した例外をそのままキャッチできます。
まとめると以下のような感じです。
await
している場合は発生した例外をそのままキャッチできるWait
やResult
を使っている場合はAggregateException
が発生し、その中のInnerException
に実際に発生した例外が格納されているawait
もWait
Result
もしない場合、タスク内で発生した例外はキャッチできない