Jaki jest najlepszy sposób na poradzenie sobie z wyjątkami rzucił w łańcuchu metody w Perlu? chcę przypisać wartość 0 lub undef jeśli któryś z metod przykuty wyjątekJak radzić sobie z błędami w łańcuchach metod w Perlu?
przykładowy kod:
my $x = $obj->get_obj->get_other_obj->get_another_obj->do_something;
Co najlepszy sposób to zrobić? Czy za każdym razem muszę zawijać instrukcję try/catch/finally? Kontekst, który chcę zastosować to: Pracuję w programowaniu stron internetowych przy użyciu Catalyst i DBIC i robię wiele połączonych zestawów wyników i jeśli niektóre z tych zestawów wyników rzucają wyjątek, chcę tylko przypisać wartość 0 lub undef, a następnie leczyć ten błąd w szablonie (jestem przy użyciu Template Toolkit). Jeśli jest inny sposób, aby to zrobić bez zawijania każdego połączenia w próbie/catch, proszę dać mi znać. Jeśli znasz lepszy sposób traktowania tego typu błędów w tym samym kontekście (Catalyst/DBIC/TT), sugeruj. Praktycznym przykładem może być sytuacja, gdy użytkownik szuka czegoś, a to nie istnieje.
Jeden problem z tym: metody Settera będą używać wartości pustej do określenia zwrotu wartość czynszu. Na przykład '$ foo-> Name (" David ") ustawi nazwę na" David ", a' $ foo-> Name' zwróci obecną nazwę. Zatem zerowy zwrot z jednej metody może być poprawnym wprowadzeniem do innej metody. –
To nie jest problem. To nie jest operacja. Następne metody nic nie robią. Nie przekazujesz obiektu zerowego jako argumentu; to jest referent. Jeśli poprzednia metoda nie zwraca obiektu, nie można go połączyć. –
Przepraszam, że nie rozumiem. Jak mogę zastosować go w zestawach wyników łańcuchów DBIC? – nsbm