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ń:

Czy używanie try-catch () nadmiernie wpływa negatywnie na wydajność?Czy lepiej jest używać określonych typów wyjątków? Co się stanie, jeśli przegapię przechwycenie jednego z możliwych typów X wyjątków, które mogą wystąpić?
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.

questionAnswers(9)

yourAnswerToTheQuestion