Transformando mensagens de erro em Exceções
Em PHP, somente as extensões mais modernas lançam exceções. As funções internas do PHP e a grande parte das extensões não trabalham com exceções, mas usam principalmente o Error Reporting.
Uma boa prática de programação é saber trabalhar com exceções. Para que esta prática se estabeleça, todos os erros ocorridos no sistema, devem ser, na verdade, exceções.
Isto não acontece com o PHP, onde exceções e erros “genéricos” são lançados simultaneamente no sistema, impossibilitando uma máquina de tratamento de exceções perfeita. Mas a boa notícia é que é possível transformar todos os erros do PHP em exceções.
Primeiro, vamos visualizar a sinopse da classe ErrorException. Ela será a classe de exceção que substituirá os erros gerados pelo Error Reporting:
ErrorException extends Exception {
/* Properties */
protected int $severity ;
/* Methods */
public __construct ([ string $message [, int $code [, int $severity [, string $filename [, int $lineno ]]]]] )
final public int getSeverity ( void )
/* Inherited methods */
final public string Exception::getMessage ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public string Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private string Exception::__clone ( void )
}
Agora vamos tornar todas as mensagens de erro em ErrorException:
<?php
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");
/* Trigger exception */
strpos();
?>
O trecho acima irá imprimir algo como:
Fatal error: Uncaught exception ‘ErrorException’ with message ‘Wrong parameter count for strpos()’ in /home/bjori/tmp/ex.php:8
Stack trace:
#0 [internal function]: exception_error_handler(2, ‘Wrong parameter…’, ‘/home/bjori/php…’, 8, Array)
#1 /home/bjori/php/cleandocs/test.php(8): strpos()
#2 {main}
thrown in /home/bjori/tmp/ex.php on line 8
Usando esta técnica, torna-se viável o emprego de uma perfeita máquina de tratamento de exceções em sistemas desenvolvidos em PHP.
Referência: http://www.php.net/manual/pt_BR/class.errorexception.php
No related posts.


It’s Nice!