Programação c ++: lançar exceções

Video: 14 - Criando suas próprias exceções

A função C ++ que atribui recursos localmente pode necessitar de apanhar uma excepção, faz algum processamento, e, em seguida, relançar-lo a cadeia pilha. Considere o seguinte exemplo:

Video: Aula de Programação Java 11 - Exceções/Exception

anular fileFunc () {ofstream * Pout = new ofstream ("file.txt") -otherFunction () - excluir pOut-}

Como muitos programadores sabem, a memória alocada por Novo não é devolvido para a pilha automaticamente. E se otherFunction () foram para lançar uma exceção, o controle seria sair do programa sem invocar excluir, e a memória alocada no início do fileFunc () seria perdido.

Video: Programação Orientada a Objetos (Parte 16): tratamento de exceções em aplicações Java



Para evitar esse problema, fileFunc () pode incluir um pegar(…) para capturar qualquer exceção lançada:

anular fileFunc () {ofstream * Pout = new ofstream ("file.txt") -tentar {otherFunction () - excluir pOut-} catch (...) {apagar Pout-throw-}}

Dentro desta frase, fileFunc () retorna a memória que ele alocado anteriormente para a pilha. No entanto, não está em uma posição para processar o restante da exceção porque ele não tem idéia do que poderia ter dado errado. Ele ainda não sabe que tipo de objeto ele apenas pegou.

Video: 08 - A cláusula Throw

o lançar palavra-chave sem nenhum argumento relança o objeto exceção atual de volta até a cadeia para alguma função que pode processar adequadamente o erro.


Publicações relacionadas