Курс по Raku / Обекти, вход-изход и изключения / Изключения

Прихващане на изключения с try

Когато нещо се обърка в програма на Raku — липсващ файл, изричен die, — се хвърля изключение. По подразбиране необработеното изключение спира програмата. Блокът try ви позволява да изпълните код, който може да се провали, без програмата да се срине.

Обвивате рискования код в блок try. Ако вътре в него бъде хвърлено изключение, блокът спира дотам, но програмата продължава:

my $result = try {
    die 'Boom!';
};

say "Still works";

die е прихванат от try, така че програмата не се срива — тя продължава направо със следващия оператор и отпечатва:

Still works

Когато блокът се провали така, той се изчислява до недефинирана стойност, така че $result е недефинирана:

say $result.defined; # False

Прихванатото изключение се съхранява в специалната променлива $!. Можете да прочетете съобщението му оттам:

say $!.message; # Boom!

Така try превръща фаталната грешка в нещо, което програмата ви може да разгледа и на което може да реагира. Ако блокът се изпълни без изключение, $result съдържа стойността му, а $! е недефинирана.

Още в този раздел

Практика

Направете 1 тест върху съдържанието на този раздел.

Упражнения

Този раздел съдържа 3 упражнения. Разгледайте всички теми в раздела, преди да се захванете с практиката.

  1. Прихванете грешката
  2. Когато нищо не се обърка
  3. Опит или стойност по подразбиране

Навигация в курса

Изключения   |   Не всяка грешка е незабавна