AFAIK, try
и finally
блок используется выполнить фрагмент кода, который может бросить некоторые exception
, мы также добавляем catch
блок, если мы готовы обработать некоторый тип исключения и/или за исключением их, как FileIOException
, AccessRight
что ли. Но когда я управлял этим ..Ошибка в CLR? выполнение CLR двигатель не удалось
private void button1_Click(object sender, EventArgs e)
{
try
{
Environment.FailFast("It failed");
}
finally
{
MessageBox.Show("Done");
}
}
Своих перерывами с исключением и говорит
FatalExecutionEngineError был обнаружен
сообщения: среда обнаружена фатальная ошибка. Адрес ошибки был равен 0x032526f4, в потоке 0xd04. Код ошибки: 0x80131623. Эта ошибка может быть ошибкой в CLR или в небезопасных или не поддающихся проверке частях кода пользователя. Общие источники этой ошибки включают ошибки маршалинга пользователя для COM-interop или PInvoke, которые могут повредить стек.
Теперь msdn говорит
Обычно, когда необработанное исключение заканчивается заявление, или нет, это не важно, наконец, блок запуска. Однако, если у вас есть операторы в блоке finally, который должен быть запущен даже в этой ситуации, одним из решений является добавление блока catch в оператор try-finally.
Итак, я добавил блок catch
, но все же он говорит то же самое.
private void button1_Click(object sender, EventArgs e)
{
try
{
Environment.FailFast("It failed");
}
catch (Exception ex)
{
}
finally
{
MessageBox.Show("Done");
}
}
Не удалось выполнить с той же ошибкой. Что касается CLR, который говорит, что блок кода в конечном итоге всегда запускается (по крайней мере, когда добавляется catch), это, безусловно, не так. Обзоры/мнения кого-нибудь?
Также здесь снимок ..