JavaRush /Java-Blog /Random-DE /Die 10 häufigsten Fragen zu Ausnahmen in Java
raynn
Level 31
Нижний Новгород

Die 10 häufigsten Fragen zu Ausnahmen in Java

Veröffentlicht in der Gruppe Random-DE
Der Artikel beschreibt die 10 am häufigsten gestellten Fragen zu Ausnahmen in Java. Top 10 Fragen zu Ausnahmen in Java – 1

1. Überprüfbar und nicht überprüfbar

Kurz gesagt, geprüfte Ausnahmen müssen explizit im Methodenkörper abgefangen oder im throws-Abschnitt der Methode deklariert werden. Ungeprüfte Ausnahmen werden durch Probleme verursacht, die nicht gelöst werden können, z. B. Division durch 0, Nullzeiger usw. Geprüfte Ausnahmen sind besonders wichtig, da Sie von anderen Entwicklern, die Ihre API verwenden, erwarten, dass sie wissen, wie sie mit Ausnahmen umgehen. Beispielsweise ist IOException eine häufig verwendete geprüfte Ausnahme, während RuntimeException eine ungeprüfte Ausnahme ist. Bevor Sie weiterlesen, schauen Sie sich Hierarchisches Ausnahmediagramm in Java an .

2. Der beste Weg, mit Ausnahmen umzugehen

Wenn die Ausnahme korrekt behandelt werden kann, muss sie abgefangen werden, andernfalls muss sie weitergeleitet werden.

3. Warum können in try definierte Variablen nicht in Catch oder Final verwendet werden?

Im folgenden Codeabschnitt können die in einem Try-Block deklarierten Zeilen nicht in einem Catch-Block verwendet werden. Dieser Code lässt sich nicht kompilieren.
try {
	File file = new File("path");
	FileInputStream fis = new FileInputStream(file);
	String s = "inside";
} catch (FileNotFoundException e) {
	e.printStackTrace();
	System.out.println(s);
}
Der Grund dafür ist, dass nicht bekannt ist, wo im Try-Block die Ausnahme möglicherweise ausgelöst wurde. Möglicherweise wurde die Ausnahme ausgelöst, bevor das Objekt deklariert wurde. Und das gilt auch für dieses Beispiel.

4. Warum lösen Double.parseDouble(null) und Integer.parseInt(null) unterschiedliche Ausnahmen aus?

Das ist richtig, sie lösen unterschiedliche Ausnahmen aus. Dies ist ein JDK-Problem. Sie wurden einfach von verschiedenen Leuten entworfen, und Sie sollten sich darüber keine allzu großen Sorgen machen.
Integer.parseInt(null);
// вызывает java.lang.NumberFormatException: null

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

5. Grundlegende Laufzeitausnahmen in Java

Hier sind einige davon:
IllegalArgumentException
ArrayIndexOutOfBoundsException
Sie können in einer if-Anweisung verwendet werden, wenn die Bedingung nicht erfüllt ist, wie hier:
if (obj == null) {
   throw new IllegalArgumentException("obj не может быть равно null");

6. Ist es möglich, mehrere Ausnahmen in einem Catch-Block abzufangen?

Die Antwort ist ja. Solange die Klassen dieser Ausnahmen in der Klassenvererbungshierarchie auf dieselbe Oberklasse zurückgeführt werden können, kann nur diese Oberklasse verwendet werden.

7. Kann ein Konstruktor Ausnahmen auslösen?

Die Antwort ist ja. Ein Konstruktor ist nur eine besondere Art von Methode. Hier ist ein Codebeispiel.

8. Ausnahmen im letzten Block auslösen

Im Prinzip können Sie dies ganz legal tun:
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();
		}
	}
}
Um jedoch die Lesbarkeit des Codes zu gewährleisten, müssen Sie den verschachtelten Block try-catchals neue Methode deklarieren und einen Aufruf dieser Methode in den Block einfügen 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. Ist es möglich, „return“ in einem „finally“-Block zu verwenden?

Ja, du kannst.

10. Warum gehen Entwickler stillschweigend mit Ausnahmen um?

Beispielsweise tauchen solche Codeteile häufig auf. Wenn eine ordnungsgemäße Ausnahmebehandlung so wichtig ist, warum schreiben Entwickler sie dann weiterhin auf diese Weise?
try {
     ...
} catch(Exception e) {
     e.printStackTrace();
}
Es ist am einfachsten, es zu ignorieren. Aber auch wenn dies häufig geschieht, heißt das nicht, dass es richtig ist. Links:
  1. Ungeprüfte Ausnahmen in Java
  2. Die Wurzel eines hierarchischen Ausnahmebaums in Java
  3. Fragen zu Ausnahmen beim Stackoverflow
Originaler Artikel
Was gibt es sonst noch zu lesen:

Ausnahmen in Java

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