![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Ostatnio ciekawi mnie temat używania Exceptionów - muszę przyznać, że trochę słabo to czuję. Kiedyś Exception stosowałem do rzeczy, które po prostu mogły spowodować niedziałanie aplikacji - np. brak dostępu do pliku czy coś podobnego. Ostatnio jednak widzę, że coraz częściej w nowych bibliotekach Exceptiony stosuje się w inny sposób tj. do wymuszenia typowania metody bez zwracania NULL.
Np taka klasa:
Pierwsza metoda (podejście o którym mówię) nigdy nie zwraca nulla, tylko obiekt lub rzuca wyjątek. Druga metoda (tradycyjna) zwraca obiekt lub null. Które podejście stosujecie? Dlaczego. Ja po rozmowie z kolegą zacząłem skłaniać się ku pierwszej wersji i brak możliwości zwrócenia oczekiwanego obiektu traktuję jako wyjątek.Podświadomie wydaje mi się to bardziej logiczne i wymusza trochę więcej dyscypliny. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Nie ma jednoznacznej odpowiedzi na pytanie null VS wyjątek VS null object VS optional VS jeszcze coś innego. Jest to niemal zawsze zależne od konkretnej sytuacji i od przewidzianego zachowania. Podaj konkretny przypadek użycia - wtedy można zastanawiać się co wybrać.
2. @Pilsener akurat Twoja sugestia odnośnie czegoś takiego: W przypadku zasobów nie będących w bezpośredniej władzy programu (tj. wszystko wykorzystujące sieć, dyski czy ogólnie środowisko systemu) jest po prostu zła i nieprawidłowa - prowadzi do błędów, bo pomiędzy sprawdzeniem (has()), a wykorzystaniem (get()) stan systemu może się zmienić. Tutaj tylko wyjątki dają sensowny interfejs, bo trzeba spróbować pobrać zasób (get()) by w ogóle stwierdzić czy jest on dostępny (has()). Ten post edytował Crozin 3.01.2019, 15:37:36 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 01:47 |