Пожалуйста, просмотрите следующий код -
static void Main(string[] args)
{
// Get the task.
var task = Task.Factory.StartNew<int>(() => { return div(32, 0); });
// For error handling.
task.ContinueWith(t => { Console.WriteLine(t.Exception.Message); },
TaskContinuationOptions.OnlyOnFaulted);
// If it succeeded.
task.ContinueWith(t => { Console.WriteLine(t.Result); },
TaskContinuationOptions.OnlyOnRanToCompletion);
Console.ReadKey();
Console.WriteLine("Hello");
}
private static int div(int x, int y)
{
if (y == 0)
{
throw new ArgumentException("y");
}
return x / y;
}
Если я выполняю код в режиме деблокирования, на выходе появляется "Одна или несколько ошибок", и как только я нажимаю клавишу "Enter", также появляется сообщение "Hello". Если я запускаю код в режиме отладки, вывод аналогично режиму освобождения. Но при отладке в среде IDE появляется сообщение об исключении IDE ( "Необработанное исключение в коде пользователя" ), когда элемент управления выполняет строку
throw new ArgumentException("y");
Если я продолжу работу, программа не выйдет из строя и отобразит тот же вывод, что и режим выпуска. Это правильный способ справиться с исключением?