Java - gdzie i jak powinny być stosowane wyjątki?
Czytałem kilka rzeczy na temat obsługi wyjątków w Javie, aby móc pisać lepszy kod. OK, przyznaję, jestem winny; Użyłem za dużo bloków try-catch {}, użyłemex.printStackTrace()
w haczyku, nawet nie używając właściwego rejestratora (właściwieSystem.out
iSystem.err
zostały przekierowane do aPrintWriter
, więc wygenerowano dziennik). Jednak po kilku godzinach czytania znajduję się w dziwnym miejscu: nieznanym. Jeśli wyjątki mają na celu przekazanie informacji o nieprawidłowych stanach przepływu, skąd wiadomo, GDZIE jest odpowiedni poziom do zrobienia czegoś z tą informacją?
Na przykład, gdy wystąpi błąd bazy danych, czy należy zwrócić wartość pustą lub kod błędu, lub rzucić wyjątek? Jeśli zostanie rzucony, GDZIE ten wyjątek powinien być obsługiwany? Rozumiem, że nie ma sensu rejestrować wyjątków, jeśli nie możesz nic z tym zrobić. Jednak w aplikacjach GUI, które mogą łatwo zabić Twój GUI (używam SWT i widziałem to zbyt często), nawet w przypadkumenuShown()
metoda (anArrayIndexOutOfBounds
wyjątek zamknie aplikację, jeśli nie zostanie obsłużona). Przykład może trwać wiecznie, ale oto podsumowanie pytań:
Szczerze mówiąc, słyszałem o i używam zaledwie 10%. Myślę o standardowych wyjątkach Java w ciągu 2-3 lat. Tak, ktoś powiedział, że jeśli rozmówca nie wie, jak sobie poradzić z rzuconymi wyjątkami, NIE POWINIEN PRAWO nazywać metody rzucania. Czy to prawda?Przeczytałem ten artykułAnders Hejlsberg, mówiąc, że sprawdzone wyjątki są złe. Czy powinno to wskazywać, że w niektórych przypadkach zaleca się wygodne połknięcie wyjątku?Obraz jest wart 1000 słów; Sądzę, że niektóre przykłady bardzo tutaj pomogą.
Wiem, że temat jest wieczny, ale tak naprawdę nie mogę się doczekać, aby przejrzeć średni projekt 150 klas, korzystając z waszej rady. Wielkie dzięki.