Manipulando Erros e Exceções em Aplicativos Delphi

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:

instagram viewer
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: