Try ... catch
Os blocos try catch permite tratar exceções em uma maneira controlada. No entanto, enquanto estes blocos vai pegar um erro que é até você para lidar com eles corretamente. É muito melhor parar um erro que ocorre, em vez de pegá-la depois que ocorreu a primeira razão para isso é que torna seu código, por mais confiável defensivamente programação. A segunda razão é que leva mais tempo para o código para recuperar-se de uma exceção, mesmo quando ele está em um bloco try ... catch. O try catch vai pegar e lidar com os erros dentro do bloco try.
person = null ; $ Pessoa = null;
tentar
{
$ person - > name ; echo $ pessoa -> nome;
}
Exception $ ex ) catch (Exception $ ex)
{
" An error occured : " . $ ex - > getMessage ( ) ; echo "Ocorreu um erro:". ex $ -> getMessage ();
}
Então, acima de exceção nula é pego com a variável $ pessoa. Você pode lançar uma exceção, criando um objeto de exceção novo, como assim ...
person = null ; $ Pessoa = null;
.
.
.
$ person ) if (! pessoa $)
{
Exception ( " The person object can ' t be null . " ) ; throw new Exception ("O objeto pessoa pode 't ser nulo.");
}
Você também pode definir seus próprios tipos de exceções, por exemplo, um tipo para o seu código de banco de dados. Portanto, algo como.
DatabaseException extends Exception classe DatabaseException estende Exception
{
Make the message parameter required , and hide the code parameter / / Faz o parâmetro mensagem necessária, e ocultar o parâmetro código
__construct ( $ message ) { public function __ construct ($ message) {
__construct ( $ message , 0 ) ; pai construção __ :: ($ mensagem, 0);
}
To change the string output override this / / Para mudar a saída de string substituir esse
__toString ( ) { __ toString public function () {
" An error occured in your database , the error is : { $ this - > message } n " ; return "Ocorreu um erro no seu banco de dados, o erro é: {$ this - mensagem>} n";
}
}
, Substituindo a função
__ toString permite que o texto que está de saída para a tela a ser modificada. Esta pode então ser chamado da seguinte maneira ...
DatabaseException ( " Invalid SQL query . " ) ; throw new DatabaseException ("consulta SQL inválida.");
Quando a captura de erros mais do que um bloco catch pode estar presente por um bloco try, de modo que diferentes exceções podem ser tratadas de maneiras diferentes.
tentar
{
/ *
Code to catch * Código para pegar
* /
}
DatabaseException $ e ) catch (DatabaseException $ e)
{
" An error occured : " . $ e - > getMessage ( ) ; echo "Ocorreu um erro:" $ e -> getMessage ();.
}
Exception $ e ) catch (Exception $ e)
{
/ *
Log general exception * Entrar exceção geral
* /
}
Como você pode ver acima exceções gerais são registrados e exceções de banco de dados são mostrados na tela. Se uma exceção não for pega um erro fatal será lançada pelo PHP. Você pode pegar exceção não capturada em PHP usando a função
set_exception_handler.
HandleException ( $ exception ) HandleException função ($ exceção)
{
' header . php ' ) ; include ('header php.');
' errorPage . php ' ) ; include ('errorPage php.');
" An error occured when trying to carry out your request . nnThe error is : " , $ exception - > getMessage ( ) , " n " ; echo "Ocorreu um erro ao tentar realizar o seu pedido nnThe erro é:.", $ exceção -> getMessage (), "n";
' footer . php ' ) ; include ('rodapé php.');
}
' HandleException ' ) ; set_exception_handler ('HandleException');
Portanto, como você pode ver acima a função set_exception_handler é passado para a função HandleException como um parâmetro que ele vai chamar, se um erro ocorre. Neste caso, a função HandleException chama os modelos necessários para mostrar um erro agradável capturado página para o utilizador. É recomendável que você implemente um manipulador de exceção no seu código base do seu site para garantir que o usuário nunca é mostrada nenhuma mensagem de erro feio.
Nenhum comentário foi fornecida.
Escrito por Dominic Skinner
Última Atualização: 2011/10/25 16:00:38