Cursus Raku / Obiecta, introitus et exitus, et exceptiones / Exceptiones
Defectus molles
Exceptionem per die iacere omnia statim sistit. Interdum
id nimis violentum est: vis ut subprogramma nuntiet se effectum
producere non potuisse, sed vocanti permittat decernere utrum id fatale
sit. Ad hoc Raku defectus molles habet, per fail
creatos.
Cum subprogramma fail vocat, non statim iacit. Loco eius
obiectum speciale Failure vocanti reddit.
Failure indefinitum est, itaque vocans tacite illud
inspicere potest:
sub divide($a, $b) {
fail 'cannot divide by zero' if $b == 0;
return $a / $b;
}
say divide(10, 2); # 5
say divide(10, 0).defined; # FalseVocatio felix 5 reddit. Vocatio deficiens
Failure reddit, quod pro defined
False nuntiat, itaque vocans effectum probare potest
antequam eo utatur.
Failure mollis appellatur quia in veram
exceptionem iactam vertitur solum si eo ut valore uti conaris sine prius
inspecto. Dum illud tractas — exempli gratia defined
probando — tacitum manet. Hoc permittit subprogrammati problema
significare sine hoc quod totum programma sistere cogatur.
Hoc iam vidisti
Hic modus defectus dilati non soli fail proprius est.
Prius in hac parte eandem ideam bis invenisti.
Divisio per nihil valorem tacite producit et solum tunc iacit cum eo revera uteris:
my $x = 1 / 0; # nullus adhuc error
say $x; # solum hic iacit, cum valor adhibeturProgramma externum deficiens Proc
reddit quod solum tunc iacit si illud non tractatum abicis — serva illud
et inspice, et manet valor tacitus:
run 'sh', '-c', 'exit 1'; # Proc deficiens abicitur, itaque hoc iacitIn utroque casu problema programma eo momento quo accidit non sistit: fit valor quem inspicere potes, et in exceptionem iactam crescit solum cum eo sine inspectione uteris vel illud neglegis. Argumentum Non omnis error statim venit haec duo iuxta se ostendit.
Exercitatio
Sequuntur 1 quiz de contentis huius argumenti.
Exercitationes
In hac sectione sunt 3 exercitationes. Omnia huius sectionis argumenta inspice antequam exercitationes incipias.