Kurso de Raku / Objektoj, en- kaj eligo kaj escepto / Esceptoj / Kapti esceptojn per try

Ne ĉiu eraro estas tuja

Defaŭlte ĵetita escepto haltigas la programon tuj, kaj try estas la maniero kapti ĝin. Sed ne ĉio, kio aspektas kiel fatala eraro, efektive haltigas vian programon en la momento, kiam ĝi okazas. Raku havas misfunkciojn, kiuj restas kvietaj — prokrastante sian reagon ĝis vi uzas la rezulton, aŭ lasante vin inspekti ilin kaj daŭrigi. Kelkaj el ĉi tiuj jam aperis en ĉi tiu parto, kaj indas kolekti ilin en unu loko.

Divido per nulo. Dividi per nulo ne eksplodas tie, kie ĝi estas skribita. La malbona valoro estas produktata kaj tenata kviete; ĝi ĵetas nur kiam vi uzas ĝin — presante aŭ devigante ĝin, ekzemple:

my $x = 1 / 0;    # neniu eraro ĉi tie
say 'still running';
say $x;           # nur nun ĝi ĵetas

Ĉi tiu prokrastita konduto, kaj la objektoj Failure malantaŭ ĝi, estas la temo de Molaj misfunkcioj.

Malsukcesanta ekstera programo. Proc redonita de runshell, kiu eliris malsukcese, ne ĵetas, kiam ĝi estas produktata. Ĝi ĵetas nur, se vi forĵetas ĝin netraktita; konservu ĝin kaj legu .exitcode (aŭ testu ĝin kiel Boolean valoron), kaj la misfunkcio restas simpla valoro, al kiu vi povas reagi. Vi vidis tion en La objekto Proc.

La komuna fadeno: misfunkcio povas esti prokrastita — transformita en valoron, kiun vi ekzamenas, kiam vi estas preta, anstataŭ tuja kolapso. try kaj la fazero CATCH traktas la erarojn, kiuj estas ĵetataj tuj; ĉi tiuj mekanismoj traktas tiujn, kiuj ne estas.

Kursa navigado

Kapti esceptojn per try   |   Kaptu la eraron


💪 Aŭ iru rekte al la ekzercoj de ĉi tiu sekcio.