"Você pode encarar um erro como uma besteira a ser esquecida, ou como um resultado que aponta uma nova direção".Steve Jobs
Diante desta inspiradora frase, vou falar hoje sobre tratamento de exceções em PHP.
É compreensível que algumas pessoas ainda não enxerguem a utilidade deste recurso, pois a depender do tamanho do projeto, realmente não se faz necessário.
Caso seja dito aqui algo que desconheça, A documentação é a melhor fonte para sanar tais duvidas.
Let’s GO!
A pergunta mais freqüente é : Qual a vantagem do tratamento de erros?
lembro que essa foi a primeira quando Emmanuel sugeriu utilizarmos(rs...).
lembro que essa foi a primeira quando Emmanuel sugeriu utilizarmos(rs...).
- Depuração rápida e eficiente do código.
- Apresentação simples e rápida do ocorrido.
- A criação de um log de erros.
- auxilia na documentação.
- e como o nome sugere, te permite tratar, ou seja, manipular esses erros.
Te apresento então a função die().
É muito simples de ser usado.
$arquivo = fopen(“inexistente.txt”,”r”);
O arquivo não existe e ele retorna o seguinte erro:
Warning: fopen(welcome.txt) [function.fopen]: failed to open stream:
No such file or directory in www\tutorial\trat_eror.php on line 2
O tratamento desse erro passaria primeiramente pela checagem da existência do arquivo. E então a função die() se encarregaria de apresentar o erro ocorrido, veja:
If(!file_exists(“inexiste.txt”)){die(“Aquivo não existe!”);}else{$arquivo = fopen(“inexistente.txt”,”r”);}
E mudamos de forma simples a aparência do erro apresentado :
Arquivo não existe!
Agora é possível entender com maior clareza a importância de tratamento de erro em projetos de pequeno médio e grande porte.
Certo, entendemos porque implementar esta checagem, mas o tratamento de exceção requer um log para verificar a persistência do erro, mas agora vamos sofisticar um pouco mais (rs...).
Certo, entendemos porque implementar esta checagem, mas o tratamento de exceção requer um log para verificar a persistência do erro, mas agora vamos sofisticar um pouco mais (rs...).
Em POO no PHP podemos tratar erros de forma mais limpa e “sofisticada”.
Seu usuário não precisa ser notificado do erro, nem o sistema precisa parar para isso, por isso utilizaremos as Exceções, que são objetos derivados da classe Exception do PHP.
Para disparar uma exceção utilizamos a palavra throw, vamos usar nosso exemplo acima.
Para disparar uma exceção utilizamos a palavra throw, vamos usar nosso exemplo acima.
Class lerArquivo {Public function abrir ($arquivo){if (!file_exists(“$arquivo”)){
throw new Exception(“Arquivo não encontrado”);
}}
}$abre = new lerArquivo;
$abre->abrir(“inexistente.txt”);
Você vai notar que ele exibe uma mensagem onde indica dados de todas as propriedades da classe.
Usaremos para não exibir a mensagem de erro o try do PHP, veja:
Class lerArquivo {Public function abrir ($arquivo){if (!file_exists(“$arquivo”)){
throw new Exception(“Arquivo não encontrado”);
}}
}try{$abre = new lerArquivo;
$abre->abrir(“inexistente.txt”);}catch (Exception $e){$open_log = fopen(“log_error.log”,”w”);fwrite($e->getMessage() );$close_log = ($open_log);}
Verificando as alterações no código, percebemos o trow disparando a exceção, em um try logo abaixo recuperamos a mensagem através do catch e setamos o valor que queremos imprimir em nosso log_error.log , no caso o getMessage.
existem outros métodos disponíveis e que detalharei mais abaixo.
existem outros métodos disponíveis e que detalharei mais abaixo.
- getMessage: Retorna a mensagem de erro;
- getCode: Retorna o código de erro;
- getFile: Retorna o arquivo do qual ocorreu o erro;
- getLine: Retorna a linha na qual ocorreu o erro;
- getTrace: Retorna um array com todos os métodos e arquivos chamados até o erro ocorrer;
- getTraceAsString: Retorna o array usado em getTrace como uma string.
Lembre-se, , comentário faz parte da documentação do código.
E existe a documentação PHP para ser consultada quando precisar, devemos primar pela qualidade do código estude e descubra qual é o melhor método para realizar suas tarefas,
E existe a documentação PHP para ser consultada quando precisar, devemos primar pela qualidade do código estude e descubra qual é o melhor método para realizar suas tarefas,
Paz!