The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package t::lib::MyExceptions;
use strict;
use warnings;

package MyException1;
use parent 'Exception::Tiny';

package MyException2;
use parent -norequire, 'MyException1';

package MyException3;
use parent -norequire, 'MyException1';
use Class::Accessor::Lite (
    ro  => [qw/ my_exception3 /]
);

package MyException4;
use parent -norequire, 'MyException3';
use Class::Accessor::Lite (
    ro  => [qw/ my_exception4 /]
);

package OverwriteAsString;
use parent 'Exception::Tiny';

sub as_string {
    my $self = shift;
    'OverwriteAsString: ' . $self->message;
}

1;