Meine Antwort ist unbeliebt, aber ich denke nicht, dass Perl-Programmierer versuchen sollten, die äußerst schlechte Vorstellung von dem zu verwenden, was wir in Perl "Ausnahmen" nennen. Dies ist im Wesentlichen ein Seitenkanal-Rückgabewert. Trotz der Komplexität der Verwendung einer globalen Variablen zur Weitergabe von Zuständen sind die Menschen immer noch verliebt in die Idee von Ausnahmen und versuchen immer wieder, sie zum Laufen zu bringen.
In der Praxis die
signalisieren Menschen jedoch Fehler. Einige werden sagen, dass Sie die
mit einer Referenz Fehlerobjekte zurückgeben können, aber das brauchen Sie nicht die
. Wir haben Objekte, also sollten wir die ganze Kraft von Objekten nutzen:
sub some_sub {
...
return Result->new( error => 1, description => ... ) if $something_went_wrong;
return Result->new( error => 0, ... );
}
my $result = some_sub( ... );
if( $result->is_error ) { ... };
Dies beinhaltet keine globalen Variablen, Fernaktionen, Kopfschmerzen oder spezielle Specials. Sie erstellen eine winzige Klasse Result
oder wie auch immer Sie sie nennen möchten, um Ihre Rückgabewerte so zu verpacken, dass Sie strukturierte Daten anstelle einzelner Werte ohne Identität haben. Sie fragen sich nicht mehr, was ein Rückgabewert bedeutet. Ist das undef
ein realer Wert oder ein Hinweis auf ein Versagen? Ist der Rückgabewert gut, wenn er definiert ist oder wahr ist? Ihr Objekt kann Ihnen diese Dinge sagen. Und Sie können dasselbe Objekt mit verwenden die
. Wenn Sie das Objekt bereits mit die
und als Rückgabewert verwenden, gibt es sehr wenig zu empfehlen, all die zusätzlichen Dinge, die Sie tun müssen, um zu tolerieren $@
.
Ich spreche mehr darüber in "Fehlerobjekte zurückgeben, anstatt Ausnahmen auszulösen".
Ich weiß jedoch, dass Sie nicht helfen können, was andere Leute tun, also müssen Sie immer noch so tun, als hätte Perl Ausnahmen.