Programação c ++: lançar exceções
Video: 14 - Criando suas próprias exceções
Conteúdo
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.