vai ter tanta exception assim?! -- anyway
global variable ? Log4perl ? 2013/7/18 Junior Moraes <[email protected]> > Hi. > > Montei uma classe que utiliza o role Throwable para tratar minhas > exceptions. Nestas exceções específicas, preciso escrever os dados dentro > de um CSV. Porém, como eu já esperava, não consigo manter o file handle > aberto dentro da classe para cada vez que chamo o método throw(). > > Escrevi um código para ilustrar o problema. Note que o file handle é > apenas um bool apenas para exemplificar: > > > > package Exception; > use Moose; > with 'Throwable'; > > has errstr => (is => 'rw', isa => 'Str'); > has fh => (is => 'rw', isa => 'Int', default => 0); > > sub write { > my ($self) = @_; > > if(!$self->fh) { > # Simulando a abertura do file handle > print STDERR "Como se estivessemos abrindo o fh...\n"; > $self->fh(1); > } else { > # Escrevendo no arquivo... > print STDERR "Como se estivessemos escrevendo no fh\n"; > } > } > > 1; > > package main; > > use common::sense; > > sub any_action { > my ($x) = @_; > > if($x < 10) { > Exception->throw({ > errstr => 'x menor que 10', > }); > } > } > > for(0 .. 11) { > eval { > any_action($_); > }; > if($@) { > $@->write(); > printf "exception capturada: '%s'\n", $@->errstr; > } > } > > 1; > > > Pensei em inúmeros meios, como singleton (que não funciona com o role) mas > nada muito elegante. E não quero ficar abrindo e fechando o filehandle pra > cada exception disparada, né. > Alguém tem alguma sugestão de como lidar com exceptions mantendo o file > handle aberto? Ou um novo módulo ao invés do Throwable? > > Valeuz! > []'s > > -- > ==================================== > Junior "fvox" Moraes > Perl Programmer > Linux Reg. #557527 > junior[at]fvox[dot]com[dot]br > fb[dot]com/fvox > twitter[dot]com/fvox > ==================================== > =begin disclaimer > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ > SaoPaulo-pm mailing list: [email protected] > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> > =end disclaimer > > -- Saravá, Renato CRON http://www.renatocron.com/blog/ @renato_cron <http://twitter.com/#!/renato_cron>
=begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: [email protected] L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer
