T M
class X::Cannot::Empty
Error ReportCollection examples

Error due to inappropriate usage of an empty collection

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.