Heim  >  Artikel  >  Java  >  Ausführliche Erläuterung von Beispielen der „finally“-Anweisung in Java

Ausführliche Erläuterung von Beispielen der „finally“-Anweisung in Java

零下一度
零下一度Original
2017-07-20 19:02:501725Durchsuche

Es gibt mindestens zwei Situationen, in denen die final-Anweisung nicht ausgeführt wird:
(1) Die try-Anweisung wird nicht ausgeführt. Wenn return vor der try-Anweisung zurückgegeben wird, wird die final-Anweisung nicht ausgeführt. Dies zeigt auch, dass die notwendige, aber nicht hinreichende Bedingung für die Ausführung der final-Anweisung ist: Die entsprechende try-Anweisung muss ausgeführt werden.

(2) Es gibt eine Anweisung wie System.exit(0); im try-Block|catch-Block. System.exit(0) beendet die JVM der Java Virtual Machine und alles ist beendet. Natürlich wird die finale Anweisung nicht ausgeführt.

Wenn in try-catch-finally return auf „final“ stößt, ist return für „finally“ ungültig, das heißt:

1. Wenn „return“ im Try-Catch-Block erfolgt, wird „finally“ ebenfalls ausgeführt.

2. Die Return-Anweisung in „finally“ überschreibt die Wirkung der Return-Anweisung im Try-Catch-Block.

Fazit: Die Return-Anweisung ist nicht unbedingt der Ausgang der Funktion. Wenn die Rückgabe ausgeführt wird, wird der Wert nach der Rückgabe einfach in die Rückgabewertvariable kopiert.


class Exc{
	int a;
	int b;
}


public class Except {
	@SuppressWarnings("finally")
	static int   compute (){
		Exc e = new Exc();
		e.a = 10;
		e.b = 10;
		int res = 0 ;
		try{
			res = e.a / e.b;
			System.out.println("try ……");
			return res + 1;
			
		}catch(NullPointerException e1){
			System.out.println("NullPointerException occured");
		}catch(ArithmeticException  e1){
			System.out.println("ArithmeticException occured");
		}catch(Exception e3){
			System.out.println("Exception occured");
		}finally{
			System.out.println("finnaly occured");
		}
		System.out.println(res);
		
		return res+3;
	}
	
	public static void main(String[] args){
		int b =  compute();
		System.out.println("mian b= "+b);
	}
}

Ausgabe:

try ……
finnaly occured
mian b= 2

Fazit: Wenn keine Ausnahme vorliegt, führen Sie den Codeblock in try bis aus Die Rückgabe in try führt dann den Codeblock in „finally“ aus, um zu versuchen, „return“ auszuführen. Exit-Funktion.

class Exc{
	int a;
	int b;
}


public class Except {
	@SuppressWarnings("finally")
	static int   compute (){
		Exc e = new Exc();
//		e.a = 10;
//		e.b = 10;
		int res = 0 ;
		try{
			res = e.a / e.b;
			System.out.println("try ……");
			return res + 1;
			
		}catch(NullPointerException e1){
			System.out.println("NullPointerException occured");
		}catch(ArithmeticException  e1){
			System.out.println("ArithmeticException occured");
		}catch(Exception e3){
			System.out.println("Exception occured");
		}finally{
			System.out.println("finnaly occured");
		}
		System.out.println(res);
		
		return res+3;
	}
	
	public static void main(String[] args){
		int b =  compute();
		System.out.println("mian b= "+b);
	}
}

Ausgabe:

ArithmeticException occured
finnaly occured
0
mian b= 3

Schlussfolgerung: Wenn in try eine Ausnahme auftritt, springen Sie bei der Ausnahmeanweisung zum Ausnahmecodeblock, der von erfasst wird Catch: Führen Sie nach der Ausführung von „catch“ „finally“ aus, springen Sie aus „try{}catch{}finally{}“ und fahren Sie mit der Ausführung abwärts fort. Die nachfolgenden Anweisungen in „try“ werden nicht ausgeführt.

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung von Beispielen der „finally“-Anweisung in Java. 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