[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