[SP-pm] Exceptions com file handle
Junior Moraes
junior at fvox.com.br
Thu Jul 18 06:10:08 PDT 2013
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
====================================
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130718/d4a6cc88/attachment.html>
More information about the SaoPaulo-pm
mailing list