class Exception { }
All exceptions that are placed into the $!
variable (or into $_
in CATCH
blocks) inherit from Exception
. When you call die
or fail
with a non-Exception argument, it is wrapped into an X::AdHoc
object, which also inherits from Exception
.
User-defined exception classes should inherit from Exception
too, and define at least a method message
.
class X::YourApp::SomeError is Exception {
method message () {
" A YourApp-Specific error occurred: out of coffee! " ;
}
}
Defined as:
method message ( Exception : D : --> Str : D )
This is a stub that must be overwritten by subclasses, and should return the exception message.
Special care should be taken that this method does not produce an exception itself.
try die " Something bad happened " ;
if ( $! ) {
say $! . message ;
}
Defined as:
method backtrace ( Exception : D : )
Returns the backtrace associated with the exception in a Backtrace
object or an empty string if there is none. Only makes sense on exceptions that have been thrown at least once.
try die " Something bad happened " ;
with $! { . backtrace . print ; }
Defined as:
method throw ( Exception : D : )
Throws the exception.
my $ exception = X::AdHoc . new ;
try $ exception . throw ;
if ( $! ) { } ;
Defined as:
method resume ( Exception : D : )
Resumes control flow where .throw
left it when handled in a CATCH
block.
CATCH { default { . resume } }
Defined as:
method rethrow ( Exception : D : )
Rethrows an exception that has already been thrown at least once. This is different from throw
in that it preserves the original backtrace.
sub f () { die ' Bad ' } ;
sub g () { try f ; CATCH { default { . rethrow } } } ;
g ;
CATCH { default { say . backtrace . full } } ;
Defined as:
multi sub fail ( * @ text )
multi sub fail ( Exception $ e )
method fail ( Exception : D : )
Exits the calling Routine
and returns a Failure object wrapping the exception $e
- or, for the *@text
form, an X::AdHoc exception constructed from the concatenation of @text
. If the caller activated fatal exceptions via the pragma use fatal;
, the exception is thrown instead of being returned as a Failure
.
class ForbiddenDirectory is Exception {
has Str $ . name ;
method message { " This directory is forbidden: ' $ ! name ' " }
}
sub copy-directory-tree ( $ dir ) {
fail " $ dir is not a directory " if ! $ dir . IO . d ;
fail ForbiddenDirectory . new ( : name ( $ dir )) if $ dir eq ' foo ' ;
...
}
my $ result = copy-directory-tree ( " cat.jpg " );
say $ result . exception ;
$ result = copy-directory-tree ( ' foo ' );
say $ result . exception ;
Defined as:
multi method gist ( Exception : D : )
Returns whatever the exception printer should produce for this exception. The default implementation returns message and backtrace separated by a newline.
my $ e = X::AdHoc . new ( payload => " This exception is pretty bad " );
try $ e . throw ;
if ( $! ) { say $! . gist ; } ;
Defined as:
multi sub die ()
multi sub die ( * @ message )
multi sub die ( Exception : D $ e )
method die ( Exception : D : )
Throws a fatal Exception . The default exception handler prints each element of the list to $*ERR
(STDERR).
die " Important reason " ;
If the subroutine form is called without arguments, the value of $!
variable is checked. If it is set to a .DEFINITE
value, its value will be used as the Exception to throw if it's of type Exception , otherwise, it will be used as payload of X::AdHoc exception. If $!
is not .DEFINITE
, X::AdHoc with string "Died"
as payload will be thrown.
die
will print by default the line number where it happens
die " Dead " ;
However, that default behavior is governed at the Exception
level and thus can be changed to anything we want by capturing the exception using CATCH
. This can be used, for instance, to suppress line numbers.
CATCH {
default {
. payload . say
}
} ;
die " Dead "
Defined as:
multi sub warn ( * @ message )
Throws a resumable warning exception, which is considered a control exception, and hence is invisible to most normal exception handlers. The outermost control handler will print the warning to $*ERR
. After printing the warning, the exception is resumed where it was thrown. To override this behavior, catch the exception in a CONTROL
block. A quietly {...}
block is the opposite of a try {...}
block in that it will suppress any warnings but pass fatal exceptions through.
To simply print to $*ERR
, please use note
instead. warn
should be reserved for use in threatening situations when you don't quite want to throw an exception.
warn " Warning message " ;
Type relations for Exception
perl6-type-graph
X::Control
X::Control
Exception
Exception
X::Control->Exception
X::AdHoc
X::AdHoc
X::AdHoc->Exception
X::Comp
X::Comp
X::Comp->Exception
X::Anon::Augment
X::Anon::Augment
X::Anon::Augment->X::Comp
X::Anon::Augment->Exception
X::Anon::Multi
X::Anon::Multi
X::Anon::Multi->X::Comp
X::Anon::Multi->Exception
X::Assignment::RO
X::Assignment::RO
X::Assignment::RO->Exception
X::Attribute::NoPackage
X::Attribute::NoPackage
X::Attribute::NoPackage->X::Comp
X::Attribute::NoPackage->Exception
X::Attribute::Package
X::Attribute::Package
X::Attribute::Package->X::Comp
X::Attribute::Package->Exception
X::Attribute::Required
X::Attribute::Required
X::Attribute::Required->Exception
MOP
MOP
X::Attribute::Required->MOP
X::Undeclared
X::Undeclared
X::Undeclared->X::Comp
X::Undeclared->Exception
X::Attribute::Undeclared
X::Attribute::Undeclared
X::Attribute::Undeclared->X::Undeclared
X::Augment::NoSuchType
X::Augment::NoSuchType
X::Augment::NoSuchType->X::Comp
X::Augment::NoSuchType->Exception
X::Syntax
X::Syntax
X::Syntax->X::Comp
X::Syntax->Exception
X::Backslash::NonVariableDollar
X::Backslash::NonVariableDollar
X::Backslash::NonVariableDollar->X::Syntax
X::Backslash::NonVariableDollar->Exception
X::Backslash::NonVariableDollar->Exception
X::Backslash::UnrecognizedSequence
X::Backslash::UnrecognizedSequence
X::Backslash::UnrecognizedSequence->X::Syntax
X::Backslash::UnrecognizedSequence->Exception
X::Bind
X::Bind
X::Bind->Exception
X::Bind::NativeType
X::Bind::NativeType
X::Bind::NativeType->X::Comp
X::Bind::NativeType->Exception
X::Bind::Slice
X::Bind::Slice
X::Bind::Slice->Exception
X::Bind::ZenSlice
X::Bind::ZenSlice
X::Bind::ZenSlice->X::Bind::Slice
X::Buf::AsStr
X::Buf::AsStr
X::Buf::AsStr->Exception
X::Buf::Pack
X::Buf::Pack
X::Buf::Pack->Exception
X::Buf::Pack::NonASCII
X::Buf::Pack::NonASCII
X::Buf::Pack::NonASCII->Exception
X::Caller::NotDynamic
X::Caller::NotDynamic
X::Caller::NotDynamic->Exception
X::Cannot::Lazy
X::Cannot::Lazy
X::Cannot::Lazy->Exception
X::Channel::ReceiveOnClosed
X::Channel::ReceiveOnClosed
X::Channel::ReceiveOnClosed->Exception
X::Channel::SendOnClosed
X::Channel::SendOnClosed
X::Channel::SendOnClosed->Exception
X::Comp::AdHoc
X::Comp::AdHoc
X::Comp::AdHoc->X::AdHoc
X::Comp::AdHoc->X::Comp
X::Comp::AdHoc->Exception
X::Comp::Group
X::Comp::Group
X::Comp::Group->Exception
X::NYI
X::NYI
X::NYI->Exception
X::Comp::NYI
X::Comp::NYI
X::Comp::NYI->X::Comp
X::Comp::NYI->X::NYI
X::Comp::NYI->Exception
X::Trait::NotOnNative
X::Trait::NotOnNative
X::Trait::NotOnNative->Exception
X::Comp::Trait::NotOnNative
X::Comp::Trait::NotOnNative
X::Comp::Trait::NotOnNative->X::Comp
X::Comp::Trait::NotOnNative->X::Trait::NotOnNative
X::Comp::Trait::NotOnNative->Exception
X::Trait::Scope
X::Trait::Scope
X::Trait::Scope->Exception
X::Comp::Trait::Scope
X::Comp::Trait::Scope
X::Comp::Trait::Scope->X::Comp
X::Comp::Trait::Scope->X::Trait::Scope
X::Comp::Trait::Scope->Exception
X::Trait::Unknown
X::Trait::Unknown
X::Trait::Unknown->Exception
X::Comp::Trait::Unknown
X::Comp::Trait::Unknown
X::Comp::Trait::Unknown->X::Comp
X::Comp::Trait::Unknown->X::Trait::Unknown
X::Comp::Trait::Unknown->Exception
X::Composition::NotComposable
X::Composition::NotComposable
X::Composition::NotComposable->Exception
X::Constructor::Positional
X::Constructor::Positional
X::Constructor::Positional->Exception
X::ControlFlow
X::ControlFlow
X::ControlFlow->Exception
X::ControlFlow::Return
X::ControlFlow::Return
X::ControlFlow::Return->X::ControlFlow
X::Temporal
X::Temporal
X::Temporal->Exception
X::DateTime::InvalidDeltaUnit
X::DateTime::InvalidDeltaUnit
X::DateTime::InvalidDeltaUnit->X::Temporal
X::DateTime::InvalidDeltaUnit->Exception
X::DateTime::TimezoneClash
X::DateTime::TimezoneClash
X::DateTime::TimezoneClash->X::Temporal
X::DateTime::TimezoneClash->Exception
X::Declaration::Scope
X::Declaration::Scope
X::Declaration::Scope->X::Comp
X::Declaration::Scope->Exception
X::Declaration::Scope::Multi
X::Declaration::Scope::Multi
X::Declaration::Scope::Multi->X::Declaration::Scope
X::Does::TypeObject
X::Does::TypeObject
X::Does::TypeObject->Exception
X::Dynamic::NotFound
X::Dynamic::NotFound
X::Dynamic::NotFound->Exception
X::EXPORTHOW::Conflict
X::EXPORTHOW::Conflict
X::EXPORTHOW::Conflict->X::Comp
X::EXPORTHOW::Conflict->Exception
X::EXPORTHOW::InvalidDirective
X::EXPORTHOW::InvalidDirective
X::EXPORTHOW::InvalidDirective->X::Comp
X::EXPORTHOW::InvalidDirective->Exception
X::EXPORTHOW::NothingToSupersede
X::EXPORTHOW::NothingToSupersede
X::EXPORTHOW::NothingToSupersede->X::Comp
X::EXPORTHOW::NothingToSupersede->Exception
X::Eval::NoSuchLang
X::Eval::NoSuchLang
X::Eval::NoSuchLang->Exception
X::Export::NameClash
X::Export::NameClash
X::Export::NameClash->Exception
X::Hash::Store::OddNumber
X::Hash::Store::OddNumber
X::Hash::Store::OddNumber->Exception
X::HyperOp::NonDWIM
X::HyperOp::NonDWIM
X::HyperOp::NonDWIM->Exception
X::OS
X::OS
X::OS->Exception
X::IO
X::IO
X::IO->X::OS
X::IO->Exception
X::IO::Chdir
X::IO::Chdir
X::IO::Chdir->X::IO
X::IO::Chdir->Exception
X::IO::Chdir->Exception
X::IO::Chmod
X::IO::Chmod
X::IO::Chmod->X::IO
X::IO::Chmod->Exception
X::IO::Chmod->Exception
X::IO::Chmod->Exception
X::IO::Copy
X::IO::Copy
X::IO::Copy->X::IO
X::IO::Copy->Exception
X::IO::Copy->Exception
X::IO::Copy->Exception
X::IO::Cwd
X::IO::Cwd
X::IO::Cwd->X::IO
X::IO::Cwd->Exception
X::IO::Cwd->Exception
X::IO::Cwd->Exception
X::IO::Dir
X::IO::Dir
X::IO::Dir->X::IO
X::IO::Dir->Exception
X::IO::Dir->Exception
X::IO::Dir->Exception
X::IO::DoesNotExist
X::IO::DoesNotExist
X::IO::DoesNotExist->X::IO
X::IO::DoesNotExist->Exception
X::IO::DoesNotExist->Exception
X::IO::DoesNotExist->Exception
X::IO::Link
X::IO::Link
X::IO::Link->X::IO
X::IO::Link->Exception
X::IO::Link->Exception
X::IO::Link->Exception
X::IO::Mkdir
X::IO::Mkdir
X::IO::Mkdir->X::IO
X::IO::Mkdir->Exception
X::IO::Mkdir->Exception
X::IO::Mkdir->Exception
X::IO::Move
X::IO::Move
X::IO::Move->X::IO
X::IO::Move->Exception
X::IO::Move->Exception
X::IO::Move->Exception
X::IO::Rename
X::IO::Rename
X::IO::Rename->X::IO
X::IO::Rename->Exception
X::IO::Rename->Exception
X::IO::Rmdir
X::IO::Rmdir
X::IO::Rmdir->X::IO
X::IO::Rmdir->Exception
X::IO::Rmdir->Exception
X::IO::Rmdir->Exception
X::IO::Symlink
X::IO::Symlink
X::IO::Symlink->X::IO
X::IO::Symlink->Exception
X::IO::Symlink->Exception
X::IO::Symlink->Exception
X::IO::Unlink
X::IO::Unlink
X::IO::Unlink->X::IO
X::IO::Unlink->Exception
X::IO::Unlink->Exception
X::IO::Unlink->Exception
X::Import::MissingSymbols
X::Import::MissingSymbols
X::Import::MissingSymbols->Exception
X::Import::OnlystarProto
X::Import::OnlystarProto
X::Import::OnlystarProto->X::Comp
X::Import::OnlystarProto->Exception
X::Import::Redeclaration
X::Import::Redeclaration
X::Import::Redeclaration->X::Comp
X::Import::Redeclaration->Exception
X::Inheritance::NotComposed
X::Inheritance::NotComposed
X::Inheritance::NotComposed->Exception
X::Inheritance::Unsupported
X::Inheritance::Unsupported
X::Inheritance::Unsupported->Exception
X::Localizer::NoContainer
X::Localizer::NoContainer
X::Localizer::NoContainer->Exception
X::Method::InvalidQualifier
X::Method::InvalidQualifier
X::Method::InvalidQualifier->Exception
X::Method::NotFound
X::Method::NotFound
X::Method::NotFound->Exception
X::Method::Private::Permission
X::Method::Private::Permission
X::Method::Private::Permission->X::Comp
X::Method::Private::Permission->Exception
X::Method::Private::Unqualified
X::Method::Private::Unqualified
X::Method::Private::Unqualified->X::Comp
X::Method::Private::Unqualified->Exception
X::Mixin::NotComposable
X::Mixin::NotComposable
X::Mixin::NotComposable->Exception
X::NoDispatcher
X::NoDispatcher
X::NoDispatcher->Exception
X::Numeric::CannotConvert
X::Numeric::CannotConvert
X::Numeric::CannotConvert->Exception
X::Numeric::Real
X::Numeric::Real
X::Numeric::Real->X::Numeric::CannotConvert
X::Obsolete
X::Obsolete
X::Obsolete->X::Comp
X::Obsolete->Exception
X::OutOfRange
X::OutOfRange
X::OutOfRange->Exception
X::Package::Stubbed
X::Package::Stubbed
X::Package::Stubbed->X::Comp
X::Package::Stubbed->Exception
X::Parameter::Default
X::Parameter::Default
X::Parameter::Default->X::Comp
X::Parameter::Default->Exception
X::Parameter::InvalidType
X::Parameter::InvalidType
X::Parameter::InvalidType->X::Comp
X::Parameter::InvalidType->Exception
X::Parameter::MultipleTypeConstraints
X::Parameter::MultipleTypeConstraints
X::Parameter::MultipleTypeConstraints->X::Comp
X::Parameter::MultipleTypeConstraints->Exception
X::Parameter::Placeholder
X::Parameter::Placeholder
X::Parameter::Placeholder->X::Comp
X::Parameter::Placeholder->Exception
X::Parameter::Twigil
X::Parameter::Twigil
X::Parameter::Twigil->X::Comp
X::Parameter::Twigil->Exception
X::Parameter::WrongOrder
X::Parameter::WrongOrder
X::Parameter::WrongOrder->X::Comp
X::Parameter::WrongOrder->Exception
X::Phaser::Multiple
X::Phaser::Multiple
X::Phaser::Multiple->X::Comp
X::Phaser::Multiple->Exception
X::Phaser::PrePost
X::Phaser::PrePost
X::Phaser::PrePost->Exception
X::Placeholder::Block
X::Placeholder::Block
X::Placeholder::Block->X::Comp
X::Placeholder::Block->Exception
X::Placeholder::Mainline
X::Placeholder::Mainline
X::Placeholder::Mainline->X::Placeholder::Block
X::Placeholder::NonPlaceholder
X::Placeholder::NonPlaceholder
X::Placeholder::NonPlaceholder->X::Comp
X::Placeholder::NonPlaceholder->Exception
X::Pod
X::Pod
X::PoisonedAlias
X::PoisonedAlias
X::PoisonedAlias->X::Comp
X::PoisonedAlias->Exception
X::Proc::Async
X::Proc::Async
X::Proc::Async->Exception
X::Proc::Async::AlreadyStarted
X::Proc::Async::AlreadyStarted
X::Proc::Async::AlreadyStarted->X::Proc::Async
X::Proc::Async::AlreadyStarted->Exception
X::Proc::Async::BindOrUse
X::Proc::Async::BindOrUse
X::Proc::Async::BindOrUse->X::Proc::Async
X::Proc::Async::BindOrUse->Exception
X::Proc::Async::CharsOrBytes
X::Proc::Async::CharsOrBytes
X::Proc::Async::CharsOrBytes->X::Proc::Async
X::Proc::Async::CharsOrBytes->Exception
X::Proc::Async::MustBeStarted
X::Proc::Async::MustBeStarted
X::Proc::Async::MustBeStarted->X::Proc::Async
X::Proc::Async::MustBeStarted->Exception
X::Proc::Async::OpenForWriting
X::Proc::Async::OpenForWriting
X::Proc::Async::OpenForWriting->X::Proc::Async
X::Proc::Async::OpenForWriting->Exception
X::Proc::Async::TapBeforeSpawn
X::Proc::Async::TapBeforeSpawn
X::Proc::Async::TapBeforeSpawn->X::Proc::Async
X::Proc::Async::TapBeforeSpawn->Exception
X::Proc::Unsuccessful
X::Proc::Unsuccessful
X::Proc::Unsuccessful->Exception
X::Promise::CauseOnlyValidOnBroken
X::Promise::CauseOnlyValidOnBroken
X::Promise::CauseOnlyValidOnBroken->Exception
X::Promise::Vowed
X::Promise::Vowed
X::Promise::Vowed->Exception
X::PseudoPackage::InDeclaration
X::PseudoPackage::InDeclaration
X::PseudoPackage::InDeclaration->X::Comp
X::PseudoPackage::InDeclaration->Exception
X::Redeclaration
X::Redeclaration
X::Redeclaration->X::Comp
X::Redeclaration->Exception
X::Redeclaration::Outer
X::Redeclaration::Outer
X::Redeclaration::Outer->X::Comp
X::Redeclaration::Outer->Exception
X::Role::Initialization
X::Role::Initialization
X::Role::Initialization->Exception
X::Routine::Unwrap
X::Routine::Unwrap
X::Routine::Unwrap->Exception
X::Scheduler::CueInNaNSeconds
X::Scheduler::CueInNaNSeconds
X::Scheduler::CueInNaNSeconds->Exception
X::Seq::Consumed
X::Seq::Consumed
X::Seq::Consumed->Exception
X::Sequence::Deduction
X::Sequence::Deduction
X::Sequence::Deduction->Exception
X::Set::Coerce
X::Set::Coerce
X::Set::Coerce->Exception
X::Signature::NameClash
X::Signature::NameClash
X::Signature::NameClash->X::Comp
X::Signature::NameClash->Exception
X::Signature::Placeholder
X::Signature::Placeholder
X::Signature::Placeholder->X::Comp
X::Signature::Placeholder->Exception
X::Str::Match::x
X::Str::Match::x
X::Str::Match::x->Exception
X::Str::Numeric
X::Str::Numeric
X::Str::Numeric->Exception
X::Str::Trans::IllegalKey
X::Str::Trans::IllegalKey
X::Str::Trans::IllegalKey->Exception
X::Str::Trans::InvalidArg
X::Str::Trans::InvalidArg
X::Str::Trans::InvalidArg->Exception
X::StubCode
X::StubCode
X::StubCode->Exception
X::Syntax::AddCategorical::TooFewParts
X::Syntax::AddCategorical::TooFewParts
X::Syntax::AddCategorical::TooFewParts->X::Syntax
X::Syntax::AddCategorical::TooFewParts->Exception
X::Syntax::AddCategorical::TooFewParts->Exception
X::Syntax::AddCategorical::TooManyParts
X::Syntax::AddCategorical::TooManyParts
X::Syntax::AddCategorical::TooManyParts->X::Syntax
X::Syntax::AddCategorical::TooManyParts->Exception
X::Syntax::AddCategorical::TooManyParts->Exception
X::Syntax::Argument::MOPMacro
X::Syntax::Argument::MOPMacro
X::Syntax::Argument::MOPMacro->X::Syntax
X::Syntax::Argument::MOPMacro->Exception
X::Syntax::Augment::Illegal
X::Syntax::Augment::Illegal
X::Syntax::Augment::Illegal->X::Syntax
X::Syntax::Augment::Illegal->Exception
X::Syntax::Augment::WithoutMonkeyTyping
X::Syntax::Augment::WithoutMonkeyTyping
X::Syntax::Augment::WithoutMonkeyTyping->X::Syntax
X::Syntax::Augment::WithoutMonkeyTyping->Exception
X::Syntax::BlockGobbled
X::Syntax::BlockGobbled
X::Syntax::BlockGobbled->X::Syntax
X::Syntax::BlockGobbled->Exception
X::Syntax::CannotMeta
X::Syntax::CannotMeta
X::Syntax::CannotMeta->X::Syntax
X::Syntax::CannotMeta->Exception
X::Syntax::CannotMeta->Exception
X::Syntax::Comment::Embedded
X::Syntax::Comment::Embedded
X::Syntax::Comment::Embedded->X::Syntax
X::Syntax::Comment::Embedded->Exception
X::Syntax::Comment::Embedded->Exception
X::Syntax::Confused
X::Syntax::Confused
X::Syntax::Confused->X::Syntax
X::Syntax::Confused->Exception
X::Syntax::Confused->Exception
X::Syntax::Extension::Category
X::Syntax::Extension::Category
X::Syntax::Extension::Category->X::Syntax
X::Syntax::Extension::Category->Exception
X::Syntax::Extension::Null
X::Syntax::Extension::Null
X::Syntax::Extension::Null->X::Syntax
X::Syntax::Extension::Null->Exception
X::Syntax::Extension::Null->Exception
X::Syntax::InfixInTermPosition
X::Syntax::InfixInTermPosition
X::Syntax::InfixInTermPosition->X::Syntax
X::Syntax::InfixInTermPosition->Exception
X::Syntax::InfixInTermPosition->Exception
X::Syntax::KeywordAsFunction
X::Syntax::KeywordAsFunction
X::Syntax::KeywordAsFunction->X::Syntax
X::Syntax::KeywordAsFunction->Exception
X::Syntax::KeywordAsFunction->Exception
X::Syntax::Malformed
X::Syntax::Malformed
X::Syntax::Malformed->X::Syntax
X::Syntax::Malformed->Exception
X::Syntax::Malformed->Exception
X::Syntax::Malformed::Elsif
X::Syntax::Malformed::Elsif
X::Syntax::Malformed::Elsif->X::Syntax
X::Syntax::Malformed::Elsif->Exception
X::Syntax::Malformed::Elsif->Exception
X::Syntax::Missing
X::Syntax::Missing
X::Syntax::Missing->X::Syntax
X::Syntax::Missing->Exception
X::Syntax::Missing->Exception
X::Syntax::Name::Null
X::Syntax::Name::Null
X::Syntax::Name::Null->X::Syntax
X::Syntax::Name::Null->Exception
X::Syntax::NegatedPair
X::Syntax::NegatedPair
X::Syntax::NegatedPair->X::Syntax
X::Syntax::NegatedPair->Exception
X::Syntax::NegatedPair->Exception
X::Syntax::NoSelf
X::Syntax::NoSelf
X::Syntax::NoSelf->X::Syntax
X::Syntax::NoSelf->Exception
X::Syntax::NonAssociative
X::Syntax::NonAssociative
X::Syntax::NonAssociative->X::Syntax
X::Syntax::NonAssociative->Exception
X::Syntax::NonAssociative->Exception
X::Syntax::Number::RadixOutOfRange
X::Syntax::Number::RadixOutOfRange
X::Syntax::Number::RadixOutOfRange->X::Syntax
X::Syntax::Number::RadixOutOfRange->Exception
X::Syntax::Number::RadixOutOfRange->Exception
X::Syntax::P5
X::Syntax::P5
X::Syntax::P5->X::Syntax
X::Syntax::P5->Exception
X::Syntax::P5->Exception
X::Syntax::Perl5Var
X::Syntax::Perl5Var
X::Syntax::Perl5Var->X::Syntax
X::Syntax::Perl5Var->Exception
X::Syntax::Perl5Var->Exception
X::Syntax::Pod::BeginWithoutEnd
X::Syntax::Pod::BeginWithoutEnd
X::Syntax::Pod::BeginWithoutEnd->X::Syntax
X::Syntax::Pod::BeginWithoutEnd->X::Pod
X::Syntax::Pod::BeginWithoutEnd->Exception
X::Syntax::Pod::BeginWithoutEnd->Exception
X::Syntax::Pod::BeginWithoutIdentifier
X::Syntax::Pod::BeginWithoutIdentifier
X::Syntax::Pod::BeginWithoutIdentifier->X::Syntax
X::Syntax::Pod::BeginWithoutIdentifier->X::Pod
X::Syntax::Pod::BeginWithoutIdentifier->Exception
X::Syntax::Pod::BeginWithoutIdentifier->Exception
X::Syntax::Regex::Adverb
X::Syntax::Regex::Adverb
X::Syntax::Regex::Adverb->X::Syntax
X::Syntax::Regex::Adverb->Exception
X::Syntax::Regex::Adverb->Exception
X::Syntax::Regex::MalformedRange
X::Syntax::Regex::MalformedRange
X::Syntax::Regex::MalformedRange->X::Syntax
X::Syntax::Regex::MalformedRange->Exception
X::Syntax::Regex::MalformedRange->Exception
X::Syntax::Regex::NullRegex
X::Syntax::Regex::NullRegex
X::Syntax::Regex::NullRegex->X::Syntax
X::Syntax::Regex::NullRegex->Exception
X::Syntax::Regex::NullRegex->Exception
X::Syntax::Regex::SolitaryQuantifier
X::Syntax::Regex::SolitaryQuantifier
X::Syntax::Regex::SolitaryQuantifier->X::Syntax
X::Syntax::Regex::SolitaryQuantifier->Exception
X::Syntax::Regex::SolitaryQuantifier->Exception
X::Syntax::Regex::SpacesInBareRange
X::Syntax::Regex::SpacesInBareRange
X::Syntax::Regex::SpacesInBareRange->X::Syntax
X::Syntax::Regex::SpacesInBareRange->Exception
X::Syntax::Regex::SpacesInBareRange->Exception
X::Syntax::Regex::UnrecognizedMetachar
X::Syntax::Regex::UnrecognizedMetachar
X::Syntax::Regex::UnrecognizedMetachar->X::Syntax
X::Syntax::Regex::UnrecognizedMetachar->Exception
X::Syntax::Regex::UnrecognizedMetachar->Exception
X::Syntax::Regex::Unspace
X::Syntax::Regex::Unspace
X::Syntax::Regex::Unspace->X::Syntax
X::Syntax::Regex::Unspace->Exception
X::Syntax::Regex::Unterminated
X::Syntax::Regex::Unterminated
X::Syntax::Regex::Unterminated->X::Syntax
X::Syntax::Regex::Unterminated->Exception
X::Syntax::Regex::Unterminated->Exception
X::Syntax::Reserved
X::Syntax::Reserved
X::Syntax::Reserved->X::Syntax
X::Syntax::Reserved->Exception
X::Syntax::Reserved->Exception
X::Syntax::Self::WithoutObject
X::Syntax::Self::WithoutObject
X::Syntax::Self::WithoutObject->X::Syntax
X::Syntax::Self::WithoutObject->Exception
X::Syntax::Self::WithoutObject->Exception
X::Syntax::Signature::InvocantMarker
X::Syntax::Signature::InvocantMarker
X::Syntax::Signature::InvocantMarker->X::Syntax
X::Syntax::Signature::InvocantMarker->Exception
X::Syntax::Term::MissingInitializer
X::Syntax::Term::MissingInitializer
X::Syntax::Term::MissingInitializer->X::Syntax
X::Syntax::Term::MissingInitializer->Exception
X::Syntax::UnlessElse
X::Syntax::UnlessElse
X::Syntax::UnlessElse->X::Syntax
X::Syntax::UnlessElse->Exception
X::Syntax::Variable::IndirectDeclaration
X::Syntax::Variable::IndirectDeclaration
X::Syntax::Variable::IndirectDeclaration->X::Syntax
X::Syntax::Variable::IndirectDeclaration->Exception
X::Syntax::Variable::IndirectDeclaration->Exception
X::Syntax::Variable::Match
X::Syntax::Variable::Match
X::Syntax::Variable::Match->X::Syntax
X::Syntax::Variable::Match->Exception
X::Syntax::Variable::Match->Exception
X::Syntax::Variable::Numeric
X::Syntax::Variable::Numeric
X::Syntax::Variable::Numeric->X::Syntax
X::Syntax::Variable::Numeric->Exception
X::Syntax::Variable::Numeric->Exception
X::Syntax::Variable::Twigil
X::Syntax::Variable::Twigil
X::Syntax::Variable::Twigil->X::Syntax
X::Syntax::Variable::Twigil->Exception
X::Syntax::Variable::Twigil->Exception
X::Syntax::VirtualCall
X::Syntax::VirtualCall
X::Syntax::VirtualCall->X::Syntax
X::Syntax::VirtualCall->Exception
X::Temporal::InvalidFormat
X::Temporal::InvalidFormat
X::Temporal::InvalidFormat->X::Temporal
X::Temporal::InvalidFormat->Exception
X::TypeCheck
X::TypeCheck
X::TypeCheck->Exception
X::TypeCheck::Assignment
X::TypeCheck::Assignment
X::TypeCheck::Assignment->X::TypeCheck
X::TypeCheck::Binding
X::TypeCheck::Binding
X::TypeCheck::Binding->X::TypeCheck
X::TypeCheck::Return
X::TypeCheck::Return
X::TypeCheck::Return->X::TypeCheck
X::TypeCheck::Splice
X::TypeCheck::Splice
X::TypeCheck::Splice->X::TypeCheck
X::Undeclared::Symbols
X::Undeclared::Symbols
X::Undeclared::Symbols->X::Comp
X::Undeclared::Symbols->Exception
X::Value::Dynamic
X::Value::Dynamic
X::Value::Dynamic->X::Comp
X::Value::Dynamic->Exception
Any
Any
Exception->Any
Mu
Mu
Any->Mu
Expand above chart