Classe de erros e personalização

30 views
Skip to first unread message

Diogo Machado

unread,
Dec 20, 2011, 4:51:43 PM12/20/11
to kohan...@googlegroups.com
Bom pessoal, a minha dúvida é como trabalhar com erros, como disparar uma classe de erros e como personalizar o design do erro, para ficar agradável para cliente. Encontrei a classe HTTP_Exception no Kohana, mas não sei usar.

felipe moraes

unread,
Dec 20, 2011, 6:16:22 PM12/20/11
to kohan...@googlegroups.com
vc pode personalizar seus Exceptions .. basta criar a pasta classes/exception e botar seus exceptions que extendem a classe Exception lá.

Eu to usando um módulo Kohana Message encontrado lá no github como um Flash Message para mostrar erros do usuário. Mas isso não anula os erros pegos via ORM.

Você pode usar uma classe ou módulo de Log que dispare emails automaticamente para o webmaster ou salve no banco ou arquivo de log.

basicamente é isto.

Em 20 de dezembro de 2011 19:51, Diogo Machado <tec...@diogomachado.net> escreveu:
Bom pessoal, a minha dúvida é como trabalhar com erros, como disparar uma classe de erros e como personalizar o design do erro, para ficar agradável para cliente. Encontrei a classe HTTP_Exception no Kohana, mas não sei usar.

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana Php" dos Grupos do Google.
Para ver esta discussão na web, acesse https://groups.google.com/d/msg/kohana-php/-/fLLtjp371tAJ.
Para postar neste grupo, envie um e-mail para kohan...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para kohana-php+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/kohana-php?hl=pt-BR.



--
http://felipebastosweb.com.br
http://twitter.com/felipebastosweb

Vitor A. (Dalai)

unread,
Dec 28, 2011, 9:20:07 AM12/28/11
to kohan...@googlegroups.com
Também tenho essa dúvida.
Não sei qual seria a melhor maneira, eu penso em algo assim:

Arquivo
classes/exception/login.php

class Exception_Login extends Kohana_Exception
{
    const USUARIO_DESATIVADO     = 100001;
    const USUARIO_NAOCONFIRMADO  = 100002;
   
    /**
     *
     * @param type $debug_message mensagem pro desenvolvedor, nao em production
     * @param type $code codigo tipo Exception_Login::USUARIO_DESATIVADO
     * @param array $variables tipo array(':usuario'=>'snag...@gmail.com')
     */
    public function __construct($debug_message = null, $code = 0, array $variables = null )
    {
        $message_file  = strtolower(substr(__CLASS__, 0, strpos(__CLASS__,'_'))
                        . DIRECTORY_SEPARATOR
                        . substr(__CLASS__, strpos(__CLASS__,'_')));
                        // retorna exception/login
        $message_index = $code;
       
        $message = Kohana::message($message_file, "{$message_index}");
        parent::__construct($message, $variables, $code);
    }
}


Arquivo
messages/exception/login.php

<?php defined('SYSPATH') or die('No direct script access.');
return array(
    Exception_Login::USUARIO_DESATIVADO     => 'O usuário :usuario está desativado',
    Exception_Login::USUARIO_NAOCONFIRMADO  => 'O usuário :usuario não foi confirmado',

);

E daí, na hora do erro, seria
throw new Exception_Login("Erro ao logar no form1 etc etc", Exception_Login::USUARIO_DESATIVADO, array(':usuario'=>$usuario_email);

etc.

O Kohana_Exception se responsabiliza por traduzir caso tenha a tradução da mensagem no diretório de i18n.
Mas eu só pensei isso, ainda não pus em uso.

O que acham?

Abraços,

Vitor

unread,
Dec 28, 2011, 9:27:08 AM12/28/11
to kohan...@googlegroups.com
a dúvida é como/onde exibir as mensagens amigáveis para o usuário, se é deixando o exception passar, se é catching ele, e onde tratar isso

2011/12/28 Vitor A. (Dalai) <snag...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana Php" dos Grupos do Google.
Para ver esta discussão na web, acesse https://groups.google.com/d/msg/kohana-php/-/h-z3a9FvmJ4J.

Para postar neste grupo, envie um e-mail para kohan...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para kohana-php+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/kohana-php?hl=pt-BR.



--
Vitor de Araujo Simões (Dalai/Snag)
Estudante de Ciências da Computação - USP

"Computation is the art of building solutions
- at the cost of creating more problems"


http://www.varaujo.com.br

Diogo Machado

unread,
Dec 28, 2011, 10:54:20 AM12/28/11
to kohan...@googlegroups.com
Pois é, intão, eu tenho feito via Try catch, só que me falaram que eu teria que disparar uma exception, só que não sei tratar essas Exceptions de modo amigável.
Diogo Machado
Desenvolvimento de Aplicações Web
www.diogomachado.com | 028 9922-0849



felipe moraes

unread,
Dec 28, 2011, 11:12:09 AM12/28/11
to kohan...@googlegroups.com
se vc tá usando try catch .. tá usando exceptions .. :D

vc pode personalizar algumas exceptions .. de acordo com a criticidade do problema detectado ... exemplo:

Vamos supor que erros críticos devem disparar um email para o webmaster.

Exception_Critical {

function seila() {

mail();

}

}

automaticamente seila vai ser disparado e o email vai ser enviado ..

No try vc pode fazer aninhado ...

try {

try {} catch(Exception_Log $l)

} catch (Exception_Critical $e) {


}

ou em sequencia ...

try {

}
catch (Exception_Critical $e) {}
catch(Exception_Log $l) {}

Nesse caso, o catch executado será o que tiver o exception disparado
Reply all
Reply to author
Forward
0 new messages