class X::NYI is Exception { }

未实现功能的错误类。NYI 代表尚未实现

如果 Raku 编译器尚未完成功能,当程序使用它可以检测到并且以某种方式指定尚未实现的功能时,它可能会抛出 X::NYI 异常。

功能齐全的 Raku 编译器不得抛出此类异常,但出于兼容性原因仍提供 X::NYI 类。

典型的错误消息是

HyperWhatever is not yet implemented. Sorry.

方法§

方法 new§

method new:$feature:$did-you-mean:$workaround)

这是 X:NYI 的默认构造函数,它可以接受三个具有明显含义的参数。

class Nothing {
    method ventured$sub**@args{
        X::NYI.newfeature => &?ROUTINE.name,
                    did-you-mean => "gained",
                    workaround => "Implement it yourself" ).throw;
    }
}
 
my $nothing = Nothing.new;
$nothing.ventured("Nothing""Gained");

在这种情况下,我们抛出一个异常,表示尚未实现 ventured 例程;我们使用通用的 &?ROUTINE.name 来不将异常绑定到方法名称(以防以后更改)。此代码有效地抛出此异常

# 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 

使用异常属性,它会组成我们在那里看到的错误消息。

方法 feature§

返回描述缺失功能的 Str

方法 did-you-mean§

返回 Str,表示已实现的可选功能。

方法 workaround§

如果已声明,它会帮助显示缺失功能的可能解决方法。

方法 message§

返回包括上述属性的消息。