Skip to Content
Learning Perl 6
book

Learning Perl 6

by brian d foy
September 2018
Beginner
474 pages
9h 35m
English
O'Reilly Media, Inc.
Content preview from Learning Perl 6

Chapter 7. When Things Go Wrong

Perl 6 doesn’t always immediately give up when something goes wrong. It can fail softly. If the result of that problem doesn’t affect anything else in the program there’s no need to complain about it. However, the moment it becomes a problem that passive failure demands your attention.

This chapter shows you the error mechanisms and how to deal with them. You’ll see how to handle the problems that your program notices on your behalf as well as detect and report problems on your own.

Exceptions

Here’s a bit of code that tries to convert nonnumeric text into a number. Maybe something else didn’t put the right value in the variable:

my $m = 'Hello';
my $value = +$m;
put 'Hello there!';  # no error, so, works?

Your program doesn’t complain because you don’t do anything with the problematic result. Change the program to output the result of what you think was a numeric conversion:

my $m = 'Hello';
my $value = +$m;
put $value;

Now you get some error output instead:

Cannot convert string to number: base-10 number must
begin with valid digits or '.' in '⏏Hello' (indicated by ⏏)
    in block <unit> at ... line 2

Actually thrown at:
    in block <unit> at ... line 3

Look at that error message. It reports two line numbers. The error occurred on line 2, but it wasn’t until line 3 (the one with put) that it became a problem. That’s the soft failure. What’s actually in $value? It’s a Failure object:

my $m = 'Hello'; my $value = +$m; put "type is {$value.^name}"; # type is Failure ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Think Perl 6

Think Perl 6

Laurent Rosenfeld, Allen B. Downey
Perl 6 Deep Dive

Perl 6 Deep Dive

Andrew Shitov
Perl Best Practices

Perl Best Practices

Damian Conway
Perl by Example

Perl by Example

Ellie Quigley

Publisher Resources

ISBN: 9781491977675Errata Page