class X::Cannot::Empty

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.

The Camelia image is copyright 2009 by Larry Wall. "Raku" is a trademark of the Yet Another Society. All rights reserved.

Built with Podlite — the markup and publishing tools behind this site.