Moim szczególnym przypadkiem jest to, że użytkownik może przekazać ciąg znaków do aplikacji, aplikacja analizuje go i przypisuje do obiektów strukturalnych. Czasami użytkownik może wpisać coś nieprawidłowego. Na przykład ich wkład może opisywać osobę, ale może powiedzieć, że jej wiek to „jabłko”. Prawidłowe zachowanie w takim przypadku polega na wycofaniu transakcji i poinformowaniu użytkownika o wystąpieniu błędu, a on będzie musiał spróbować ponownie. Może istnieć wymóg zgłaszania każdego błędu, jaki znajdziemy w danych wejściowych, a nie tylko pierwszego.
W tym przypadku argumentowałem, że powinniśmy zgłosić wyjątek. Nie zgodził się, mówiąc: „Wyjątki powinny być wyjątkowe: oczekuje się, że użytkownik może wprowadzić nieprawidłowe dane, więc nie jest to wyjątkowy przypadek”. Naprawdę nie wiedziałem, jak argumentować ten punkt, ponieważ z definicji tego słowa on wydaje się mieć rację.
Ale rozumiem, że właśnie dlatego Wyjątki zostały wymyślone w pierwszej kolejności. Kiedyś trzeba było sprawdzić wynik, aby zobaczyć, czy wystąpił błąd. Jeśli nie sprawdzisz, złe rzeczy mogą się zdarzyć bez Twojej uwagi.
Bez wyjątków każdy poziom stosu musi sprawdzić wynik wywoływanych metod, a jeśli programista zapomni sprawdzić na jednym z tych poziomów, kod może przypadkowo kontynuować i zapisać nieprawidłowe dane (na przykład). W ten sposób wydaje się bardziej podatny na błędy.
W każdym razie nie krępuj się i popraw coś, co tu powiedziałem. Moje główne pytanie brzmi: czy ktoś mówi, że wyjątki powinny być wyjątkowe, skąd mam wiedzieć, czy moja sprawa jest wyjątkowa?