Seltsames Verhalten mit Moose, Try :: Tiny und TryCatch

8

Ich habe gerade angefangen, mit Moose zu arbeiten und bin auf ein seltsames Problem gestoßen, das ich nicht verstehen kann. Der folgende Code:

%Vor%

erzeugt:

%Vor%

Wenn ich jedoch Try::Tiny durch TryCatch ersetze, verhält es sich so, wie ich es annehmen sollte:

%Vor%

Auch wenn x der richtige Wert ist, sagen zB 5 , Try::Tiny immer noch den undefined value Fehler.

Da die gesamte Moose-Dokumentation, die ich gelesen habe, Try::Tiny verwendet, bin ich sehr verwirrt darüber, warum dieser Code nicht funktioniert. Mache ich hier etwas völlig Falsches?

    
Joe 16.06.2011, 00:08
quelle

2 Antworten

16

Try::Tiny erfordert ein Semikolon am Ende einer Try / Catch-Zeilengruppe:

%Vor%

Dies liegt an der Implementierung von Try::Tiny - try und catch sind beide nur Funktionen.

    
duskwuff 16.06.2011, 00:19
quelle
4

try {...} catch {...} ist nicht eingebaut (da es von einem Modul bereitgestellt wird). In Perl 5 bedeutet dies, dass Sie es mit einem Semikolon wie folgt beenden müssen:

%Vor%

Ich kann nicht beantworten, wie TryCatch mit dem fehlenden Semikolon umgehen kann - aber es ist möglich, verschiedene schwarze Magie zu verwenden:)

    
mzedeler 16.06.2011 00:25
quelle

Tags und Links