Aproveitando isso podemos capturar alguns erros que acontecem nesse momento, como erros de sessão ou de algum controller ou action que não existe, e trata-los.
Como ?
Primeira coisa que vamos fazer é colocar um try catch no nosso bootstrap (geralmente nomeado de index.php).
...
require_once "Zend/Loader/Autoloader.php";
try{
//configurações do seu sistema
...
$controlador->dispatch();
}catch( Zend_Exception $oException ){
//aqui capturamos o erro e tratamos ele
if(get_class($oException) == 'Zend_Controller_Dispatcher_Exception'){
print '<script type="text/javascript">document.location = "seusistema/index/pagina404/"</script>';
}else{
$dao = new ErroDAO();
$dao->gravarLogErro($oException);
print '<script type="text/javascript">alert('opa, aconteceu um erro, mas já estamos trabalhando para concerta-lo.');</script>';
}
}
Explicando
No catch temos o objeto $oException que contem uma série de informações sobre o problema que ocorreu.
Logo abaixo pegamos esse objeto e comparamos para saber se foi um erro do tipo "Zend_Controller_Dispatcher_Exception".
if(get_class($oException) == 'Zend_Controller_Dispatcher_Exception')
Com isso podemos saber se foi um problema de chamar um controller ou action que não existe. Dentro desse if há um código javascript para redireciona-lo para uma página 404, (página não encontrada).
No else, ou seja, caso o problema seja outro, enviamos o objeto $oException para uma DAO que vai trata-lo e gravar em alguma tabela. Assim podemos posteriormente gerar relatórios de erros capturados e tomar as medidas necessárias para corrigi-los.
E logo depois uma mensagem para o usuário!
Você pode mudar esse código da forma que preferir, ou que melhor atender os requisitos do seu sistema. O importante nesse momento é o objeto $oException.
Com o objeto $oException, podemos pegar outras informações contidas nele, para saber o que aconteceu, aonde foi o erro e etc...
//ALGUMAS INFORMAÇÕES GERADAS PELO ERRO.
$oException->getCode();
$oException->getFile();
$oException->getLine();
$oException->getMessage();
$oException->getTraceAsString();
Você pode usar essas informações da maneira que preferir, enviando por email para o programador responsável, mostrando na tela, gravando em banco como no exemplo...
Espero ter ajudado.
1 comentários:
Olá tenho um problema com uma página que utiliza o Zendframework nesta página só consigo abrir a página inicial e quando acesso os links recebo mensagem de página não encontrada.
Postar um comentário