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.