Кавычка из MSDN:
Если Завершают, или переопределение Завершают, выдает исключение, время выполнения игнорирует исключение, завершается, которые Завершают метод, и продолжает процесс завершения.
Все же, если я имею:
~Person()
{
throw new Exception("meh");
}
затем это приводит к исключению на этапе выполнения?
p.s. Я знаю, что этого никогда не должно происходить, однако мне просто любопытно вокруг этого поведения. У одного из наших клиентов была пустая выгода попытки вокруг всех их финализаторов.. это даже не зарегистрировалось, когда вещи пошли не так, как надо или reserect объект:/
Ссылка на источник вашей цитаты важна. Я должен предположить, что речь идет о старой версии .NET, возможно, о версии 1.x. Он старался быть «терпимым» к необработанным исключениям, без единого писка проглатывая их. Это не сработало, фрагменты кода, которые молча терпят неудачу, чрезвычайно трудно отлаживать.
Версия .NET 2.0 положила этому конец: хост CLR по умолчанию завершает работу приложения для любого необработанного исключения. Исключение в финализаторе фатально.