Exemplo de tentativa de captura de PHP: exceção & Tutorial de tratamento de erros

Índice:

Anonim

O que é uma exceção?

Um erro é um resultado inesperado do programa que não pode ser tratado pelo próprio programa.

Os erros são resolvidos corrigindo o programa. Um exemplo de erro seria um loop infinito que nunca para de ser executado.

Uma exceção é um resultado de programa inesperado que pode ser tratado pelo próprio programa.

Exemplos de exceção incluem tentar abrir um arquivo que não existe.

Essa exceção pode ser tratada criando o arquivo ou apresentando ao usuário a opção de pesquisar o arquivo.

Neste tutorial, você aprenderá-

  • Por que lidar com exceção?
  • Tratamento de erros de PHP
  • Exemplos de tratamento de erros
  • Diferença entre erros e exceção
  • Exceções Múltiplas
  • Testando o código

Por que lidar com exceção?

  • Evite resultados inesperados em nossas páginas, que podem ser muito chatos ou irritantes para nossos usuários finais
  • Melhorar a segurança de nossos aplicativos não expondo informações que usuários mal-intencionados podem usar para atacar nossos aplicativos
  • As exceções Php são usadas para alterar o fluxo normal de um programa se ocorrer algum erro previsível.

Tratamento de erros de PHP

Quando ocorre um erro, dependendo de suas configurações, o PHP exibe a mensagem de erro no navegador da web com informações relacionadas ao erro ocorrido.

O PHP oferece várias maneiras de lidar com erros.

Veremos três (3) métodos comumente usados;

  1. Declarações de dado - a função de dado combina as funções de eco e saída em um. É muito útil quando queremos enviar uma mensagem e parar a execução do script quando ocorre um erro.
  2. Manipuladores de erros personalizados - são funções definidas pelo usuário que são chamadas sempre que ocorre um erro.
  3. Relatório de erro de PHP - a mensagem de erro dependendo das configurações de relatório de erro de PHP. Este método é muito útil em ambiente de desenvolvimento, quando você não tem ideia do que causou o erro. As informações exibidas podem ajudá-lo a depurar seu aplicativo.

Exemplos de tratamento de erros

Vejamos agora alguns exemplos simples com rotinas de tratamento de erros.

Vamos supor que desenvolvemos um aplicativo que usa arquivos de texto para armazenar dados. Podemos querer verificar a existência do arquivo antes de tentar ler seus dados.

O código abaixo implementa o exemplo acima.

Supondo que você salvou o arquivo simple_error.php na pasta phptuts, abra a URL http: //localhost/phptuts/simple_error.php

Você obterá os seguintes resultados

Como você pode ver nos resultados acima, isso faz com que nosso aplicativo pareça pouco profissional e pode ser irritante para o usuário.

Vamos modificar o código acima e escrever um gerenciador de erros para o aplicativo

Supondo que você salvou o código acima como error_handling.php, abra a URL http: //localhost/phptuts/error_handling.php

Nota: é uma boa prática de segurança exibir uma mensagem como a mostrada acima, em vez de mostrar a mensagem como “Arquivo não encontrado”.

Vejamos outro exemplo que usa um manipulador de erros personalizado.

O manipulador de erros personalizado será definido como a função de tratamento de erros PHP padrão e basicamente exibirá um número de erro e uma mensagem.

O código abaixo ilustra a implementação do exemplo acima

Abra a URL http: //localhost/phptuts/custom_error_handler.php você obterá os seguintes resultados

.

Como você pode ver no exemplo acima, manipuladores de erros personalizados são poderosos no sentido de que

  • Eles nos permitem personalizar as mensagens de erro.
  • O manipulador de erros personalizado também pode incluir registro de erros em um arquivo / banco de dados, envio de e-mail para o desenvolvedor etc.

Vamos agora examinar o terceiro tipo de tratamento de erros. Estaremos usando a função interna do PHP error_reporting. Possui a seguinte sintaxe básica

AQUI,

  • “Error_reporting” é a função de relatório de erros do PHP
  • “$ Reporting_level" é opcional, pode ser usado para definir o nível de relatório. Se nenhum nível de relatório foi especificado, o PHP usará o nível de relatório de erro padrão conforme especificado no arquivo php.ini.
Nível de Relatório Descrição Exemplo
E_AVISO Exibe apenas mensagens de aviso. Não interrompe a execução do script relatório_erro (E_WARNING);
E_NOTICE Exibe avisos que podem ocorrer durante a execução normal de um programa ou podem ser um erro. relatório_de_erro (E_ AVISO);
E_USER_ERROR Exibe erros gerados pelo usuário, ou seja, manipulador de erros personalizado relatório_erro (E_ USER_ERROR);
E_USER_WARNING Exibe mensagens de aviso geradas pelo usuário relatório_de_erro (E_USER_WARNING);
E_USER_NOTICE Exibe avisos gerados pelo usuário relatório_de_erro (E_USER_NOTICE);
E_RECOVERABLE_ERROR Exibe erros que não são fatais e podem ser tratados com manipuladores de erros personalizados relatório_de_erro (E_RECOVERABLE_ERROR);
E_ALL Exibe todos os erros e avisos relatório_de_erro (E_ ALL);

Diferença entre erros e exceção

  • Exceções são lançadas e devem ser detectadas, enquanto os erros geralmente são irrecuperáveis.
  • As exceções são tratadas de maneira orientada a objetos.

    Isso significa quando uma exceção é lançada; um objeto de exceção é criado contendo os detalhes da exceção.

A tabela abaixo mostra os métodos do objeto de exceção

Método Descrição Exemplo
getMessage () Mostra a mensagem da exceção
getMessage();?>
Obter código() Exibe o código numérico que representa a exceção
getCode();?>
getFile () Mostra o nome do arquivo e o caminho onde ocorreu a exceção
getFile();?>
Obter linha() Mostra o número da linha onde ocorreu a exceção
getLine();?>
getTrace () Exibe uma matriz do backtrace antes da exceção
getTrace());?>
getPrevious () Mostra a exceção anterior antes da atual
getPrevious();?>
getTraceAsString () Exibe o backtrace da exceção como uma string em vez de uma matriz
getTraceAsString();?>
__para sequenciar() Exibe toda a exceção como uma string
__toString();?>

Abaixo está a sintaxe básica para lançar uma exceção.

AQUI,

  • “Lançar” é a palavra-chave usada para lançar a exceção
  • “New Exception (…)” cria um objeto de exceção e passa a string “Este é um exemplo de exceção“ como o parâmetro de mensagem.

O código acima gera a seguinte mensagem.

Agora vamos ver um exemplo que implementa as exceções throw e catch.

Vamos modificar o exemplo acima e incluir o try, throw e catch.

Possui a seguinte sintaxe básica.

AQUI,

  • “Try {…}” é o bloco de código a ser executado que pode potencialmente gerar uma exceção
  • “Catch (Exception $ e) {…}” é o bloco de código que captura a exceção lançada e atribui o objeto de exceção à variável $ e.

O código abaixo mostra o exemplo básico de exceção com a exceção try, throw e catch implementada.

O programa lança deliberadamente uma exceção que então captura.

getMessage();echo "";echo "getCode(): " . $e->getCode();echo "";echo "__toString(): " . $e->__toString();}?>

Abra a URL http: //localhost/phptuts/exception_handling.php Você obterá os seguintes resultados.

Também é possível criar múltiplas exceções para uma instrução php try dependendo do tipo de exceção lançada.

Veja o artigo sobre MySQL, acesso a dados PHP

… Para exemplos de implementação de múltiplas exceções

Exceções Múltiplas

Exceções múltiplas usam vários blocos try catch para tratar as exceções lançadas. Múltiplas exceções são úteis quando;

  • Você deseja exibir uma mensagem personalizada, dependendo da exceção lançada
  • Você deseja realizar uma operação única, dependendo da exceção lançada

O fluxograma abaixo ilustra como várias exceções funcionam

Vejamos um exemplo que usa várias exceções.

Vamos modificar o código que divide um número pelo denominador passado.

Esperamos que dois tipos de exceções ocorram;

  • Divisão por zero
  • Divisão por um número negativo

Para simplificar, exibiremos apenas o tipo de exceção em nossos blocos catch.

O PHP embutido na classe Exception é usado para lançar exceções.

Criaremos duas classes que estendem a classe de exceção e as usaremos para lançar exceções.

O código abaixo mostra a implementação.

Testando o código

Vamos assumir que você salvou multiple_exceptions.php na pasta phptuts.

Navegue até o URL http: //localhost/phptuts/multiple_exceptions.php

Volte para o arquivo PHP e passe -1 como o parâmetro, conforme mostrado no diagrama a seguir.

Navegue até a URL http: //localhost/phptuts/multiple_exceptions.php .

Que resultados você consegue? Passe 3 como parâmetro.

Que resultados você consegue?

Resumo

  • Erros são resultados inesperados produzidos pelo código PHP
  • O tratamento de erros melhora o desempenho do aplicativo
  • O PHP possui funções integradas que podem ser usadas para personalizar a maneira como o PHP relata erros
  • As exceções são como erros, mas podem ser detectadas usando o bloco catch quando lançadas.
  • Exibir mensagens de erro que mostram informações de erro é considerado uma prática de segurança ruim.