[SP-pm] Exceptions com file handle

Renato Santos renato.cron at gmail.com
Thu Jul 18 06:16:55 PDT 2013


vai ter tanta exception assim?!

-- anyway

global variable ? Log4perl ?



2013/7/18 Junior Moraes <junior at fvox.com.br>

> 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: SaoPaulo-pm at pm.org
>  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>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130718/6142e0db/attachment.html>


More information about the SaoPaulo-pm mailing list