Você não sabe quais subobjetos (classes base e membros de dados) foram construídos e quais não foram construídos em um bloco catch de um bloco try de função.Isso também garantirá que tudo seja limpo adequadamente, às custas de exigir que os subobjetos suportem um estado vazio.Idealmente, todo o construtor consiste inteiramente em inicializadores de membros sem nenhum corpo real.Se o controle sair do bloco protegido com uma exceção, e o bloco final ou destruidor também lançar uma exceção, o comportamento variará de acordo com o idioma.O encadeamento não faria sentido, pois o bloco final não substituiu uma exceção, apenas levantou uma nova depois de já descartarmos a antiga.
Fonte: https://devblogs.microsoft.com/oldnewthing/20251222-00/?p=111890
