Maison > Java > javaDidacticiel > le corps du texte

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

零下一度
Libérer: 2017-07-20 19:02:50
original
1731 Les gens l'ont consulté

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);
	}
}
Copier après la connexion

Sortie :

try ……
finnaly occured
mian b= 2
Copier après la connexion

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);
	}
}
Copier après la connexion

Sortie :

ArithmeticException occured
finnaly occured
0
mian b= 3
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal