package Data::MultiValued::Exceptions; package Data::MultiValued::Exceptions::NotFound;{ use Moose; extends 'Throwable::Error'; has value => ( is => 'ro', required => 1, ); sub as_string { my ($self) = @_; my $str = $self->message . ($self->value // ''); $str .= "\n\n" . $self->stack_trace->as_string; return $str; } } package Data::MultiValued::Exceptions::TagNotFound;{ use Moose; extends 'Data::MultiValued::Exceptions::NotFound'; has '+message' => ( default => 'tag not found: ', ); } package Data::MultiValued::Exceptions::RangeNotFound;{ use Moose; extends 'Data::MultiValued::Exceptions::NotFound'; has '+message' => ( default => 'no range found for value ', ); } package Data::MultiValued::Exceptions::BadRange;{ use Moose; extends 'Throwable::Error'; has ['from','to'] => ( is => 'ro', required => 1 ); has '+message' => ( default => 'invalid range: ', ); sub as_string { my ($self) = @_; my $str = $self->message . $self->from . ', ' . $self->to; $str .= "\n\n" . $self->stack_trace->as_string; return $str; } } 1;