sub get { my ($self) = @_; my ($record, $e); eval { $record = $self->create_record(); }; if ( $e = Exception::Record::Corrupt->caught() ) { # We got a recoverable error, so skip this record. goto &get; } elsif ( $e = Exception::Class->caught() ) { # Rethrow any generic exception caught and abort. ref $e ? $e->rethrow : die $e; } return $record; }