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

Error, typically wrapped in a Failure, when inappropriately using an empty collection.

For example, the following stack implementation fails when trying to pop a value from an empty stack. Sink context causes the returned Failure to throw.

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␤»

Methods§

method action§

method action()

Verbal description of the inappropriate action.

method what§

method what()

Returns the type that was the target of the action.