Maison  >  Article  >  Java  >  Explication détaillée d'exemples d'instructions enfin en Java

Explication détaillée d'exemples d'instructions enfin en Java

零下一度
零下一度original
2017-07-20 19:02:501724parcourir

Il existe au moins deux situations dans lesquelles l'instruction final ne sera pas exécutée :
(1) L'instruction try n'est pas exécutée si return est renvoyée avant l'instruction try, l'instruction enfin ne sera pas exécutée. Cela montre également que la condition nécessaire mais non suffisante pour que l'instruction final soit exécutée est la suivante : l'instruction try correspondante doit être exécutée.

(2) Il y a une instruction comme System.exit(0); dans le bloc try block|catch. System.exit(0) termine la JVM de la machine virtuelle Java Même la JVM est arrêtée et tout est terminé. Bien sûr, l'instruction final ne sera pas exécutée.

Dans try-catch-finally, lorsque return rencontre finalement, return n'est pas valide pour finalement, c'est-à-dire :

1. Lorsque le retour est effectué dans le bloc try catch, enfin sera également exécuté.

2. L'instruction return dans final écrasera l'effet de l'instruction return dans le bloc try catch.

Conclusion : L'instruction return n'est pas nécessairement la sortie de la fonction. Lorsque le return est exécuté, la valeur après le return est simplement copiée dans la variable de valeur de retour.


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);
	}
}

Sortie :

try ……
finnaly occured
mian b= 2

Conclusion : s'il n'y a pas d'exception, exécutez le bloc de code en essayant jusqu'à ce que Le return in try exécute ensuite le bloc de code enfin. Après l'exécution finale, return pour essayer d'exécuter return. Fonction de sortie.

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);
	}
}

Sortie :

ArithmeticException occured
finnaly occured
0
mian b= 3

Conclusion : S'il y a une exception dans try, alors au niveau de l'instruction d'exception, passez au bloc de code d'exception capturé par catch, Après avoir exécuté catch, exécutez enfin, sortez de try{}catch{}finally{} et continuez l'exécution vers le bas, sans exécuter les instructions suivantes dans try.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn