Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Queria saber se existe alguma forma de capturar e tratar esses erros de forma genérica no php? No java todo o erro que nos podemos ter dentro da aplicação são tratados com exceções. Então eu colocava um bloco try catch para tratar de forma genérica algum possível erro que o usuário possa fazer. Apenas uma medida ADICIONAL caso algo não tenha sido tratado e o o usuário não se deparar com uma mensagem de erro estranha.
Ex:
try{
//monte de código
}catch(Exception e){
JOptionPane.showMessageDialog("Houve um erro no sistema");
}
Só que no php existe diferentes tipos de erros, tentei capturar algumas erros aqui usando um try catch de forma genérica só que não adiantou, alguém conhece alguma forma de capturar esses erros e trata-los?
OBS: Tem gente que usa um "or die()", só que com ele não da para pegar um grande bloco como um arquivo inteiro.
>
vê se ajuda!
http://imasters.com.br/artigo/4451/php/tratamento-de-excecoes-no-php-5/
Quase isso. Provavelmente serei apedrejado verbalmente porque conceitualmente Exceptions são diferentes de um trigger_error(), por exemplo.
Uma Exception deveria ser lançada quando uma exceção (não, jura?) ocorrer. E uma exceção é algo inesperado pela aplicação ou pelo programador.
Porém, principalmente quando trabalhando com OOP, para manipular erros sem lançar Exceptions são necessários alguns malabarismos. E tudo que é de mais e infla o código, sobrecarrega a aplicação e mata a performance.
Pois bem... Alguns dos recursos do PHP que já foram reescritos para uma abordagem orientada a objetos, como a classe DateTime e os SPL Iterators, por exemplo, disparam Exceptions "genéricas" ou especificamente nomeadas para cada situação.
E é claramente visível que eles não fazem isso unicamente com 'exceções às regras" e sim para qualquer erro ou impossibilidade de continuação mesmo.
Quando você codifica seu próprio código você pode disparar uma dessas Exceptions também pois são classes nativas disponíveis para uso (considerando a versão do PHP, claro). Assim como pode criar sua própria classe Exception a qual DEVE estender ou da classe-base Exception ou de alguma nomeada cima citada (que por sua vez já estendem Exception) e, então dispará-las.
O problema é que MUITA coisa do PHP ainda não foi reescrita e dispararm erros de forma comum, que são direcionados para a tela sem chance de serem capturados por um bloco catch().
E é aí que entra uma classe ligeiramente modificada de Exceptions: A ErrorException. Com ela e com auxílio de set_error_handler() você direciona quase todos erros que o PHP emite para uma Exception podendo, assim, capturá-los.
Mas, como eu disse não são todos os erros. Erros fatais ou que acontecem antes da interpretação de set_error_handler() ocorrer não podem ser pegos dessa maneira.
Felizmente existe uma possibilidade, através de register_shutdown_function() como encaminhado pelo @Enrico Pereira nesse tópico (meu mesmo).
Parece muita coisa, mas não é. E com tudo isso você pode se livrar dos erros feios, mal redigidos ou quase indecifráveis do PHP e escrever uma coisa sua, mais concisa, mostrar tudo num layout bonitinho ou quem sabe até traduzí-los.
Configuração de log e eventos de erros do PHP
Acho que não, hein? Com exceção de error_log o restante apenas serve para configurar os erros.
Pelo que deu a entender ele quer manipular os erros. E se tiver que analisar um arquivo pra isso o tiro acaba saindo pela culatra.
#4
configurar o ambiente é o básico..
nao postei o link como "a solução" definita, mas apenas como dica complementar..
conceitualmente, Notices, Warnings e Fatal Errors não devem ser disparados nunca pela sua aplicação.
E não vai ser "capturando" eles que a sua aplicação ficará "melhor". Você deveria focar em não deixar que a sua aplicação dispare algum deles, e não capturar qndo eles forem lançados (pois eles não deveriam ser lançados nunca)
vê se ajuda!
http://imasters.com.br/artigo/4451/php/tratamento-de-excecoes-no-php-5/