MSDN でこの記事と、このトピックに関する SO に関するいくつかの質問/回答を調査しましたが、以下のコードが機能しない理由を理解できません (サンプル コンソール アプリで)。
MSDN によると、AggregateException がスローされることが予想されます。これには、hello
メッセージを含む 1 つの内部例外が含まれます。代わりに、このhello
例外は処理されません。デバッガー内で発生します。
続行を押すか、スタンドアロンで実行すると、期待どおりに動作します。VSで常に続行を押さないようにする方法はありますか? 結局のところ、Try...Catch
ブロック内にあるものはすべて、シングル スレッド プログラミング モデルで処理されると見なされます。そうしないと、デバッグが悪夢になる可能性があります。
VB.NET
Sub Main()
Try
Task.Factory.StartNew(AddressOf TaskThatThrowsException).Wait()
Catch ex As AggregateException
Console.WriteLine(ex.ToString) 'does not get here until you hit Continue
End Try
End Sub
Private Sub TaskThatThrowsException()
Throw New Exception("hello") 'exception was unhandled
End Sub
C#
namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
try {
Task.Factory.StartNew(TaskThatThrowsException).Wait();
}
catch (AggregateException ex) {
Console.WriteLine(ex.ToString()); //never gets here
}
}
static void TaskThatThrowsException() {
throw new Exception("hello"); //exception was unhandled
}
}
}
ここで私が見逃している明らかなものはありますか?