Heim  >  Artikel  >  Java  >  Grundlagen und Grundprinzipien der Java-Ausnahmebehandlung

Grundlagen und Grundprinzipien der Java-Ausnahmebehandlung

php是最好的语言
php是最好的语言Original
2018-08-08 11:16:041790Durchsuche

Als ich mir heute den Hadoop-Quellcode ansah, dachte ich über das System nach, an dem ich kürzlich arbeitete, und stellte fest, dass viele Ausnahmebehandlungsmethoden falsch waren. Ich folgte immer noch der traditionellen Ausnahmebehandlungsmethode (das ist die Verwendung von Rückgabewerten zur Identifizierung von Programmanomalien). Die Deklaration vieler Methoden in Hadoop löst Ausnahmen aus, aber die Deklaration vieler Methoden in meinem System löst keine Ausnahmen aus. Es erkennt nur die abnormale Situation und gibt eine Fehlermeldung aus, löst jedoch keine Ausnahme aus.

Die readFields()-Methode der Block-Klasse unter dem Paket org.apache.hadoop.hdfs.protocol:

public void readFields(DataInput in) throws IOException {    this.blockId = in.readLong();    this.numBytes = in.readLong();    this.generationStamp = in.readLong();    if (numBytes < 0) {      throw new IOException("Unexpected block size: " + numBytes);//抛出异常,要是的话就不会抛出,而只是System.out.println错误提示,
    }

1. Wenn der Name der Methodendeklaration eine Ausnahme auslöst, dann Der Methodenkörper muss keine Ausnahme auslösen. Denn Sie können eine Ausnahmebeschreibung in die Methodendeklaration aufnehmen, diese aber nicht tatsächlich auslösen! Dies hat den Vorteil, dass Sie zuerst einen Platz für die Ausnahme haben und diese Ausnahme später auslösen können, ohne den vorhandenen Code zu ändern. Diese Fähigkeit ist wichtig, wenn abstrakte Basisklassen und Schnittstellen definiert werden, damit abgeleitete Klassen oder Schnittstellenimplementierungsklassen diese vordeklarierten Ausnahmen auslösen können.

2. Warum haben einige Methodendeklarationen keine Würfe, aber Ausnahmen werden im Methodenkörper geworfen? Von RuntimeException geerbte Ausnahmen können ohne Ausnahmebeschreibungswürfe ausgelöst werden! Für Laufzeitausnahmen (auch ungeprüfte Ausnahmen genannt) benötigt der Compiler keine Ausnahmebeschreibung. Ausnahmen vom Typ RuntimeException (und seinen Unterklassen) können im Code nur ignoriert werden. Die Behandlung anderer Ausnahmetypen wird vom Compiler erzwungen. Der Grund dafür ist, dass RuntimeException einen Programmierfehler darstellt.

3. Laufzeitausnahmen werden automatisch von der Java Virtual Machine ausgelöst!

  1. Grundlagen der Ausnahmebehandlung
    1.1 System.out.println ist teuer. Der Aufruf von System.out.println verringert den Systemdurchsatz.

    1.2 Verwenden Sie die ungewöhnliche printStackTrace()-Methode nicht in einer Produktionsumgebung. printStackTrace druckt den Aufrufstapel standardmäßig auf der Konsole. Es ist unrealistisch, in einer Produktionsumgebung auf die Konsole zuzugreifen.

  2. Grundprinzipien der Ausnahmebehandlung
    2.1 Wenn Sie eine Ausnahme nicht behandeln können, fangen Sie sie nicht ab.

    2.2 Wenn Sie es erfassen möchten, sollten Sie es in der Nähe der Ausnahmequelle erfassen.

    2.3 Schlucken Sie keine Ausnahmen, die Sie fangen.
    * (Es handelt sich um eine abgefangene Ausnahme, die aber nichts bewirkt)

    2.4 Sofern Sie die Ausnahme nicht erneut auslösen möchten, protokollieren Sie sie.

    2.5 Wenn eine Ausnahme neu umschlossen und dann erneut ausgelöst wird, drucken Sie keinen Status-Trace aus.

    2.6 Verwenden Sie benutzerdefinierte Ausnahmeklassen, anstatt jedes Mal, wenn Sie eine Ausnahme auslösen müssen, java.lang.Exception auszulösen. Der Aufrufer der Methode kann durch Würfe erkennen, welche Ausnahmen behandelt werden müssen – sie ist also selbstbeschreibend.

    2.7 Wenn Sie Geschäftslogik schreiben, sollte das System ungeprüfte Ausnahmen für Fehler auslösen, die von Endbenutzern nicht repariert werden können. Für nicht reparierbare Fehler ist eine geprüfte Ausnahme erforderlich .

    2.8 Versäumen Sie niemals, Ausnahmen zu deklarieren, die überprüft werden müssen, da das Schreiben von throws-Anweisungen die Verwendung für Sie unangenehm machen würde.

    2.9 Fehler auf Anwendungsebene oder nicht reparierbare Systemausnahmen werden mit ungeprüften Ausnahmen ausgelöst.
    * (Beachten Sie, dass es sich um einen Fehler handelt, was bedeutet, dass er nicht repariert werden kann, z. B. ein Fehler in der Konfigurationsdatei)

    2.10 Organisieren Sie Ihre Methoden entsprechend der Granularität der Ausnahmen

Verwandte Empfehlungen:

Grundkenntnisse der Java-Ausnahme- und Fehlerbehandlung

Wiedererlangung der Grundlagen von Java (16): Zusammenfassung von Ausnahmen

Das obige ist der detaillierte Inhalt vonGrundlagen und Grundprinzipien der Java-Ausnahmebehandlung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn