Quais são os mecanismos de exceção em c ++?

Video: [Aula 6] Exceções - Linguagem C

Ocasionalmente funções não funcionam corretamente - mesmo para os programadores experientes em C ++. Os meios tradicionais de relatar falha é devolver alguma indicação para o chamador. C ++ inclui um mecanismo para capturar e tratamento de erros chamada exceções. A manipulação de condições de erro com exceções é um conceito-chave para entender.

Video: Programação em C# - Tratamento de Exceções (Blocos Try...Catch) - 34

O mecanismo de exceção é baseado em palavras-chave try, catch e lançar (Que é nomes certos, mais variáveis ​​que você não pode usar). Em linhas gerais, funciona assim: Uma função tenta para obter através de um pedaço de código. Se o código detecta um problema, ele lançaré uma indicação de erro que a função de chamada deve pegar.

O seguinte trecho de código demonstra como isso funciona em 1s e 0s:



// FactorialException - demonstrar exceções usando // a função fatorial // # include #incluir #incluir using namespace std - // factorial - computar factorialint factorial (int n) {// você não pode lidar com valores negativos de n - // melhor seleção para que firstif condição (n lt; 0) {string throw ("Argumento para negativo factorial") -} // vá em frente e calcular factorialint accum = 1-while (n gt; 0) {accum * = n-n ---} retornar accum-} int principal (int nNumberofArgs, char * pszArgs []) {try {// esta vai workcout lt; lt; "Factorial de 3 está "lt; lt; fatorial (3) lt; lt; endl - // isto irá gerar uma exceptioncout lt; lt; "Factorial de -1 é "lt; lt; fatorial (-1) lt; lt; endl - // controle nunca terá herecout lt; lt; "Factorial de 5 está "lt; lt; fatorial (5) lt; lt; endl -} // controle passa herecatch (erro string) {cout lt; lt; "Ocorreu um erro: " lt; lt; erro lt; lt; endl-} catch (...) {cout lt; lt; "prendedor padrão " lt; lt; endl -} // espera até que o usuário está pronto antes de terminar o programa // para permitir que o usuário veja o resultscout programa lt; lt; "Pressione Enter para continuar ..." lt; lt; endl-cin.ignore (10, `n`) - cin.get () - 0-} retornar

a Principal() começa com a criação de um bloco equipado com o experimentar palavra-chave. Dentro deste bloco, ele pode continuar do jeito que faria se o bloco não estavam presentes. Nesse caso, a Principal() tentativas para calcular o fatorial de um número negativo.

Para não ser enganado, o inteligente fatorial() função detecta o pedido falso e lança uma indicação de erro usando o lançar palavra-chave. O controlo passa para o pegar frase, que segue imediatamente a chave de fechamento do experimentar quadra. A terceira chamada para fatorial() não é executada.

Através de um recurso não-tão-inteligente chamado de especificação excepção, você pode adicionar o tipo de objetos que fatorial() lança a sua declaração. Ao mesmo tempo, alguém pensou que esta seria uma boa idéia, mas os tempos mudam. especificações de exceção nunca foi obrigatório e foram reprovados no padrão 2011.


Publicações relacionadas