JavaRush /Blog Java /Random-PL /10 najważniejszych pytań dotyczących wyjątków w Javie
raynn
Poziom 31
Нижний Новгород

10 najważniejszych pytań dotyczących wyjątków w Javie

Opublikowano w grupie Random-PL
W artykule opisano 10 najczęściej zadawanych pytań dotyczących wyjątków w Javie. 10 najważniejszych pytań dotyczących wyjątków w Javie — 1

1. Sprawdzalne i nieweryfikowalne

Krótko mówiąc, sprawdzone wyjątki muszą zostać jawnie przechwycone w treści metody lub zadeklarowane w sekcji rzutów metody. Niesprawdzone wyjątki są spowodowane problemami, których nie można rozwiązać, takimi jak dzielenie przez 0, wskaźnik zerowy itp. Sprawdzone wyjątki są szczególnie ważne, ponieważ oczekujesz, że inni programiści korzystający z Twojego API będą wiedzieć, jak obsługiwać wyjątki. Na przykład IOException jest powszechnie używanym zaznaczonym wyjątkiem, podczas gdy RuntimeException jest niesprawdzonym wyjątkiem. Zanim zaczniesz czytać dalej, zapoznaj się z hierarchicznym diagramem wyjątków w Javie .

2. Najlepszy sposób radzenia sobie z wyjątkami

Jeśli wyjątek można obsłużyć poprawnie, należy go przechwycić, w przeciwnym razie należy go przekazać dalej.

3. Dlaczego zmiennych zdefiniowanych w try nie można użyć w catch lub wreszcie?

W poniższym fragmencie kodu linii zadeklarowanej w bloku try nie można użyć w bloku catch. Ten kod nie zostanie skompilowany.
try {
	File file = new File("path");
	FileInputStream fis = new FileInputStream(file);
	String s = "inside";
} catch (FileNotFoundException e) {
	e.printStackTrace();
	System.out.println(s);
}
Powodem jest to, że nie wiadomo, gdzie w bloku try mógł zostać zgłoszony wyjątek. Możliwe, że wyjątek został zgłoszony przed zadeklarowaniem obiektu. I to jest prawdą w przypadku tego przykładu.

4. Dlaczego Double.parseDouble(null) i Integer.parseInt(null) zgłaszają różne wyjątki?

Zgadza się, zgłaszają różne wyjątki. To jest problem JDK. Zostały po prostu zaprojektowane przez różnych ludzi i nie należy się tym zbytnio przejmować.
Integer.parseInt(null);
// вызывает java.lang.NumberFormatException: null

Double.parseDouble(null);
// вызывает java.lang.NullPointerException

5. Podstawowe wyjątki wykonawcze w Javie

Oto kilka z nich:
IllegalArgumentException
ArrayIndexOutOfBoundsException
Można ich użyć w instrukcji if, gdy warunek nie jest spełniony, jak tutaj:
if (obj == null) {
   throw new IllegalArgumentException("obj не может быть равно null");

6. Czy można przechwycić wiele wyjątków w jednym bloku catch?

Odpowiedź brzmi tak. Dopóki klasy tych wyjątków można prześledzić w hierarchii dziedziczenia klas do tej samej nadklasy, można używać tylko tej nadklasy.

7. Czy konstruktor może zgłaszać wyjątki?

Odpowiedź brzmi tak. Konstruktor jest po prostu specjalnym rodzajem metody. Oto przykład kodu.

8. Zgłaszanie wyjątków w ostatnim bloku

Zasadniczo możesz to zrobić całkiem legalnie:
public static void main(String[] args) {
	File file1 = new File("path1");
	File file2 = new File("path2");
	try {

		FileInputStream fis = new FileInputStream(file1);
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} finally {
		try {
			FileInputStream fis = new FileInputStream(file2);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
}
Aby jednak zachować czytelność kodu, należy zadeklarować zagnieżdżony blok try-catchjako nową metodę i wstawić wywołanie tej metody do bloku finally.
public static void main(String[] args) {
	File file1 = new File("path1");
	File file2 = new File("path2");
	try {

		FileInputStream fis = new FileInputStream(file1);
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} finally {
		methodThrowException();
	}
}

9. Czy możliwe jest użycie return w bloku last?

Tak, możesz.

10. Dlaczego programiści po cichu radzą sobie z wyjątkami?

Na przykład często pojawiają się takie fragmenty kodu. Jeśli właściwa obsługa wyjątków jest tak ważna, dlaczego programiści nadal piszą to w ten sposób?
try {
     ...
} catch(Exception e) {
     e.printStackTrace();
}
Najłatwiej to zignorować. Ale nawet jeśli często się to robi, nie oznacza to, że jest to prawidłowe. Spinki do mankietów:
  1. Niesprawdzone wyjątki w Javie
  2. Korzeń hierarchicznego drzewa wyjątków w Javie
  3. Pytania dotyczące wyjątków w przepełnieniu stosu
Oryginalny artykuł
Co jeszcze warto przeczytać:

Wyjątki w Javie

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION