class X::Cannot::Empty is Exception { }

错误,通常包装在 Failure 中,当不当使用空集合时。

例如,当尝试从空栈中弹出值时,以下栈实现将失败。Sink 上下文导致返回的 Failure 抛出。

class Stack {
    my class Node {
        has $.value;
        has Node $.next;
    }
    has Node $!next;
 
    method push($value{
        $!next .= new(:$value:$!next);
        self;
    }
 
    method pop() {
        fail X::Cannot::Empty.new(:action<pop>:what(self.^name))
         unless $!next;
 
        my $value = $!next.value;
        $!next .= next;
        $value;
    }
}
 
my $stack = Stack.new.push(42);
say $stack.pop# OUTPUT: «42␤» 
try $stack.pop;
say $!.message# OUTPUT: «Cannot pop from an empty Stack␤» 

方法§

方法操作§

method action()

对不当操作的文字描述。

方法什么§

method what()

返回作为操作目标的类型。