Grundlagen der Java-Fehlerbehandlung - Die Geschichte, die abfängt, wird nur im Vordergrund aufgegriffen

Ich frage mich wirklich, wo ich den Fehler finden soll.

Wenn Sie versuchen, in einem Unterprogramm zu fangen, erreichen Sie möglicherweise nicht den Ort, den Sie abholen möchten.

Java war das gleiche

Beispiele, die nicht erreichen

Wenn dieselbe Ausnahme in mehreren Unterroutinen angewendet wird, kann sie nur in der inneren Unterroutine übernommen werden.

public class MyException {
	final private static int[] M = {1,2,3}; 
	public static void main(String[] args) {
		try {
			subroutine(M);
		}
		catch ( ArrayIndexOutOfBoundsException e ) {
		   System.out.println("[SECOND] catch : " + e.getMessage());
		}
	}

	public static void subroutine(int[] M) throws ArrayIndexOutOfBoundsException {
		try {
			System.out.println(M[4]);
		}
		catch ( ArrayIndexOutOfBoundsException e ) {
		   System.out.println("[FIRST] catch : " + e.getMessage());
		}
	}
}

result

[FIRST] catch : Index 4 out of bounds for length 3

Beispiel zu kommen

Wenn Sie es erneut in den inneren Verschluss werfen, können Sie es außen aufnehmen. Übergeben Sie beim Werfen das Argument e auf nette Weise. Wenn es e bleibt, tritt ein Fehler auf. Ich bin mir nicht sicher.

public class MyException {
	final private static int[] M = {1,2,3}; 
	public static void main(String[] args) {
		try {
			subroutine(M);
		}
		catch ( ArrayIndexOutOfBoundsException e ) {
		   System.out.println("[SECOND] catch : " + e.getMessage());
		}
	}

	public static void subroutine(int[] M) throws ArrayIndexOutOfBoundsException {
		try {
			System.out.println(M[4]);
		}
		catch ( ArrayIndexOutOfBoundsException e ) {
		   System.out.println("[FIRST] catch : " + e.getMessage());
		   throw new ArrayIndexOutOfBoundsException(e.getMessage());
        <---Werfen
		}
	}
}

result

[FIRST] catch : Index 4 out of bounds for length 3
[SECOND] catch : Index 4 out of bounds for length 3

Also was ich meine ist

reference http://math.hws.edu/javanotes/c8/s3.html

Der letzte Code besteht hier auch aus if + throw. Ich glaube, ich schreibe so etwas, aber ich bin zu müde, um es noch zu verstehen, also gehe ich ins Bett.

Nun, diese Art von Memo

Recommended Posts

Grundlagen der Java-Fehlerbehandlung - Die Geschichte, die abfängt, wird nur im Vordergrund aufgegriffen
Die Geschichte, dass .java auch in Unity 2018 erstellt wurde
[Docker] Eine Geschichte über einen Fehler beim Erstellen von Docker
Fehlerprotokolle und Ausnahmebehandlung, die häufig im Java-Bereich angezeigt werden
[Schienen] Über den Fehler, dass das Bild nicht in der Produktionsumgebung angezeigt wird
Die Geschichte, dass das Servlet nicht in die Java-Webanwendung geladen werden konnte
Die Geschichte des Schreibens von Java in Emacs
Die Geschichte einer illegalen staatlichen Ausnahme in Jetty.
[Docker] Eine Geschichte über einen Fehler beim Erstellen von Docker
[Java] Wo befindet sich die Implementierungsklasse der Annotation, die in BeanValidation vorhanden ist?
Die Geschichte des einfachen String-Vergleichs in Java
[Java] Behandlung von Java Beans in der Methodenkette
Eine Geschichte über das JDK in der Java 11-Ära
Der in Java 10 eingeführte Schnittpunkttyp ist erstaunlich (?)
Die Geschichte des Lernens von Java in der ersten Programmierung
Die Geschichte, dass link_to tief ist (Ursache unbekannt)
[Java] In der Ausgabe wird etwas als "-0.0" angezeigt
Die Geschichte, dass die vom Java-Konstruktor aufgerufene Methode zur Variableninitialisierung nicht überschrieben werden sollte
Was ist besser, Kotlin oder zukünftiges Java?
Code, der nur die in der Verarbeitung integrierte Kamera anzeigt
[Fehler] Die App wird in der Produktionsumgebung nicht angezeigt
Die Geschichte, die zur Lösung des Fehlers führte, weil postgres nicht mit Docker-Compose begann
wsimport-Fehlerbehandlung (Eine Klasse / Schnittstelle mit dem gleichen Namen "xxx" wird bereits verwendet)