class X::NYI
class X::NYI is Exception { }
Error class for unimplemented features. NYI stands for Not Yet Implemented.
If a Raku compiler is not yet feature complete, it may throw an X::NYI
exception when a program uses a feature that it can detect and is somehow specified is not yet
implemented.
A full-featured Raku compiler must not throw such exceptions, but
still provide the X::NYI
class for compatibility reasons.
A typical error message is
HyperWhatever is not yet implemented. Sorry.
Methods
method new
method new( :$feature, :$did-you-mean, :$workaround)
This is the default constructor for X:NYI
which can take three parameters with obvious meanings.
class Nothing {
method ventured( $sub, **@args) {
X::NYI.new( feature => &?ROUTINE.name,
did-you-mean => "gained",
workaround => "Implement it yourself" ).throw;
}
}
my $nothing = Nothing.new;
$nothing.ventured("Nothing", "Gained");
In this case, we are throwing an exception that indicates that the ventured
routine has not been implemented; we use the generic &?ROUTINE.name
to not tie the exception to the method name in case it is changed later on. This code effectively throws this exception
# OUTPUT:
# ventured not yet implemented. Sorry.
# Did you mean: gained?
# Workaround: Implement it yourself
# in method ventured at NYI.raku line 6
# in block <unit> at NYI.raku line 14
Using the exception properties, it composes the message that we see there.
method feature
Returns a Str describing the missing feature.
method did-you-mean
Returns a Str indicating the optional feature that is already implemented.
method workaround
It helpfully shows a possible workaround for the missing feature, if it's been declared.
method message
Returns the message including the above properties.