すべて、次のコードを取得してください。
Task<bool> generateStageAsyncTask = null;
generateStageAsyncTask = Task.Factory.StartNew<bool>(() =>
{
return GenerateStage(ref workbook);
}, this.token,
TaskCreationOptions.LongRunning,
TaskScheduler.Default);
// Run core asynchroniously.
bool bGenerationSuccess = false;
try
{
bGenerationSuccess = await generateStageAsyncTask;
}
catch (OperationCancelledException e)
{
// Script cancellation.
result.RunSucceeded = true;
result.ResultInfo = "Script processing cancelled at the users request.";
return result;
}
メソッド内から、次のようGenerateStage
に a をテストして再スローOperationCancelledException
します
try
{
...
}
catch (Exception e)
{
if (e.GetType() == typeof(OperationCanceledException))
throw e;
else // <- Here it is saying that the thrown exception is unhandled.
{
// Do other stuff...
}
}
しかし、上記の指定された行では、再スローされた例外が処理されないことを示しています。上記の最初のコード スニペットでmy を適切な でラップしていますが、再スローされた例外がトラップされないのはなぜですか?await
try/catch
try/catch