これは、「C# 5.0 in a Nutshell」のサンプル コードです。
TaskCreationOptions atp = TaskCreationOptions.AttachedToParent;
Task.Factory.StartNew (() =>
{
Task.Factory.StartNew (() => { throw null; }, atp);
Task.Factory.StartNew (() => { throw null; }, atp);
Task.Factory.StartNew (() => { throw null; }, atp);
})
.ContinueWith (p => Console.WriteLine (p.Exception),
TaskContinuationOptions.OnlyOnFaulted);
VS2012 設定で「CLR 例外」: 「ユーザー未処理でブレーク」オプションをチェックして、このコードを実行すると、VS の「NRE 例外がユーザー コードによって処理されませんでした」というポップアップが表示されます。throw null;
ContinueWith 以降の Wait で例外を try-catch しようとしましたが、未処理の例外が発生しました。
「CLR例外」を有効にするソリューションのように感じます:「ユーザー未処理のブレーク」をオフにすると、実際にこの例外を処理するため、間違っているようです。では、それを管理する正しい方法は何ですか?