Der Konsens der Perl-Community scheint zu sein, dass Try::Tiny der bevorzugte Weg ist, die Ausnahmebehandlung zu machen. Die "milde Policy", auf die Sie sich beziehen, ist wahrscheinlich auf eine Kombination von:
- Perl nicht eine vollständig objektorientierte Sprache. (z. B. im Gegensatz zu Java, wo Sie nicht vermeiden können, mit Ausnahmen umzugehen.)
- Der Hintergrund vieler Perl-Entwickler. (Sprachen wie C und Shell haben keine Ausnahmemechanismen.)
- Die Art von Aufgaben, für die Leute Perl verwenden. (Kleine Skripte für Text Munging und Bericht Generation, in der Ausnahme Behandlung ist nicht erforderlich.)
- Perl kein (gut) eingebauten Ausnahme-Mechanismus.
Beachten Sie, dass der letzte Punkt bedeutet, dass Sie viel Code wie folgt erhältlich:
eval { something() };
if ([email protected]) {
warn "Oh no! [[email protected]]\n";
}
diese Ausnahme auch der Handhabung ist, obwohl es nicht versuchen, nicht verwendet/catch-Syntax. Es ist jedoch zerbrechlich und wird eine Reihe von subtilen Grenzfällen durchbrechen, an die die meisten Menschen nicht denken. Try :: Tiny und die anderen Exception-Handling-Module auf CPAN wurden geschrieben, um es einfacher zu machen, richtig zu machen.
1. C hat setjmp()
und longjmp()
, die für eine sehr grobe Form der Ausnahmebehandlung verwendet werden können.
Betrogene von http://stackoverflow.com/questions/503189/is-object-oriented-exception-handling-in-perl-worth-it http://stackoverflow.com/questions/2165161/whats- broken-about-Ausnahmen-in-perl http://stackoverflow.com/questions/2439966/do-you-use-an-exception-class-in-your-perl-programs-why-or-why-not http://stackoverflow.com/questions/1426501/how-doi-i-handle-exceptions-in-a-procedural-language - Brauchen wir wirklich einen anderen Beitrag über Perl Exception Handling? – Ether
Siehe meine Antwort in [Ist Try :: Tiny immer noch für die Ausnahmebehandlung in Perl 5.14 oder höher empfohlen?] (Http://Stackoverflow.com/a/10374265/2766176) –