Czy poprawne jest pisanie kodu w którym godzimy się że lecą wyjątki?

0

Witam

Hipotetycznie mam np metodę która na podstawie ścieżki odczytuje wartość i ją zwraca, załóżmy, że nie każda ścieżka zawiera wartość i wtedy leci wyjątek.
Niech taką metodę otoczę blokiem try catch i wielokrotnie wywołuje z różnymi ścieżkami.
Czy poprawne jest pisanie kodu w którym godzimy się że lecą wyjątki? Pomimo to że są przechwytywane i się nic nie dzieje?

0

Pierwsze pytanie co robisz w bloku catch. Jeżeli nic (samo logowanie to nadal nic) to założenie jest błędne. Jeżeli brak wartości nie jest rzeczą niezwykłą, którą obsłużyć musi użytkownik bądź programista w jakiś specyficzny sposób to wyrzucanie wyjątku jest niepoprawne. Zaciemnia kod i powoduje, że działa on wolniej. W dodatkui taki wyjątek nie ma sensu, bo nie jest obsługiwany. Moja propozycja to zwrócienie stanu/zmiennej logicznej:

Path validPath;
for(Path p in paths){
    if(pathValidator.validate(p)){
        validPath = p;
        break;
    }
}

Chyba wygląda lepiej...

0

Chodzi mi o idę czy można się godzić że lecą wyjątki w programie

2

Jeżeli nie są potrzebne i służą tylko do sterowania przepływem lub okreslają status wykonania operacji to nie powinno się ich używać.

0
kornik280 napisał(a):

Chodzi mi o idę czy można się godzić że lecą wyjątki w programie

No chyba po to one są?

2

Wyjątki są do obsługi sytuacji wyjątkowych.
W normalnym, bezbłędnym przebiegu programu nie powinno być żadnego wyjątku.

Przykładowo, jeśli funkcja ma zwracać kolekcję obiektów, przy czym normalną sytuacją może być, że tych obiektów w danym momencie nie ma (np. lista zalogowanych użytkowników), to należy zwrócić pustą kolekcję, a nie rzucać wyjątkiem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1