исключение выдачи финализатора c#?

Кавычка из MSDN:

Если Завершают, или переопределение Завершают, выдает исключение, время выполнения игнорирует исключение, завершается, которые Завершают метод, и продолжает процесс завершения.

Все же, если я имею:

~Person()
{
throw new Exception("meh");
}

затем это приводит к исключению на этапе выполнения?

p.s. Я знаю, что этого никогда не должно происходить, однако мне просто любопытно вокруг этого поведения. У одного из наших клиентов была пустая выгода попытки вокруг всех их финализаторов.. это даже не зарегистрировалось, когда вещи пошли не так, как надо или reserect объект:/

13
задан sjhuk 22 April 2010 в 15:09
поделиться

1 ответ

Ссылка на источник вашей цитаты важна. Я должен предположить, что речь идет о старой версии .NET, возможно, о версии 1.x. Он старался быть «терпимым» к необработанным исключениям, без единого писка проглатывая их. Это не сработало, фрагменты кода, которые молча терпят неудачу, чрезвычайно трудно отлаживать.

Версия .NET 2.0 положила этому конец: хост CLR по умолчанию завершает работу приложения для любого необработанного исключения. Исключение в финализаторе фатально.

22
ответ дан 1 December 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: