Zpo-12-wyk-Slajd34
Przykład: do czego służy ten aspekt?
Po omówieniu podstawowych elementów aspektów oraz przedstawieniu przykładów, można przejść do bardziej zaawansowanych rozwiązań.
Na slajdzie przedstawiono aspekt, który przechwytuje wywołania wszystkich metod przed i po tym fakcie, wywołując w odpowiedzi metody System . out . println ().
Co wydarzy się po uruchomieniu jakiegokolwiek kodu skompilowanego razem z tym z tym aspektem?
Otóż program ten nie wyświetli żadnego napisu i zakończy się. Przyczyną jest tzw. cichy błąd – zgłoszenie wyjątku, który jednak nie będzie zaprezentowany użytkownikowi.
Wynika to z konstrukcji punktu cięcia: osiągany jest on w momencie wywołania dowolnej metody w dowolnej klasie. A zatem, wywołanie w programie pierwszej metody spowoduje uruchomienie najpierw porady before () i związanego z nią kodu. Kod ten składa się również z wywołania metody, co również spowoduje uruchomienie porady before ()... Spowoduje to rekurencyjne zapętlenie, aż do pojawienia się wyjątku związanego z przepełnieniem stosu wywołań metod. Jednak informacja o nim również nie pojawi się, ponieważ do akcji wkroczy porada after (), powodująca identyczne zapętlenie rekurencyjne. Skutkiem będzie zatem ciche zakończenie programu.