Infelizmente, a criação de aplicativos inclui codificação. Independentemente de quão cuidadosamente você escreva / depure seu programa, será impossível imaginar todas as situações que podem dar errado. O usuário inexperiente pode, por exemplo, tentar abrir um arquivo inexistente ou inserir um valor incorreto em um campo de dados.
Os usuários cometem erros e devemos estar preparados para lidar com / evitar esses erros sempre e sempre que possível.
Erros, exceções?
Uma exceção geralmente é uma condição de erro ou outro evento que interrompe o fluxo normal de execução em um aplicativo. Sempre que um erro resulta do processamento de uma linha de código, o Delphi cria (gera) um objeto descendente do TObject chamado objeto de exceção.
Blocos Guardados
Um aplicativo responde a uma exceção executando algum código de finalização, manipulando a exceção ou ambos. A maneira de habilitar a interceptação de erro / exceção em um determinado código, a exceção deve ocorrer em um bloco de instruções protegido. O código geral se parece com:
experimentar. {bloco de código protegido} exceto. em começar. {bloco de exceção manipula SomeException} end; fim;
UMA tente / exceto A instrução executa as instruções no bloco de código protegido. Se as instruções forem executadas sem que nenhuma exceção seja gerada, o bloco de exceções será ignorado e o controle será passado para a instrução após a palavra-chave final.
Exemplo:
... Zero: = 0; experimentar. manequim: = 10 / Zero; exceto. no EZeroDivide do. MessageDlg ('Não é possível dividir por zero!', MtError, [mbOK], 0); fim;...
Protegendo Recursos
Quando uma seção do código adquire um recurso, geralmente é necessário garantir que o recurso seja liberado novamente (ou você poderá obter uma vazamento de memória), independentemente de o código ser concluído normalmente ou ser interrompido por uma exceção. Nesse caso, a sintaxe usa finalmente palavra-chave e se parece com:
{algum código para alocar recursos} experimentar. {bloco de código protegido} finalmente. {termination blok - código para liberar recursos} fim;
Exemplo:
... AboutBox: = TAboutBox. Criar (nulo); experimentar. AboutBox. ShowModal; finalmente. AboutBox. Liberação; fim;...
Inscrição. OnException
Se o seu aplicativo não manipular o erro que causou a exceção, o Delphi usará seu manipulador de exceções padrão - apenas abrirá uma caixa de mensagem. Você pode considerar escrever código no evento OnException para o objeto TApplication, a fim de interceptar erros no nível do aplicativo.
Interromper Exceções
Ao criar um programa com manipulação de exceção, você pode não querer que o Delphi interrompa as exceções. Este é um ótimo recurso se você quiser que o Delphi mostre onde ocorreu uma exceção; no entanto, pode ser irritante quando você testar seu próprio tratamento de exceção.
Poucas palavras finais
A idéia deste artigo é dar uma rápida olhada no que são exceções. Para uma discussão mais aprofundada sobre o tratamento de exceções, considere Manipulando Exceções no Delphi Exception Handling, usando uma ferramenta como Delphi Crash / Exception Handling with Bug Reporting e alguns dos seguintes artigos relacionados: