Nous savons que, quelles que soient une exception soit jetée, ou que je le saisis et la manipulait, le blocage finalement sera exécuté, alors j'étais curieux d'y avoir une possibilité que finalement bloquer ne sera pas exécuté. P>
et si System.exit () est appelé en essayant ou en attraper, puis l'est également appelé? P>
9 Réponses :
dans la documentation Java: P>
http://java.sun.com/docs /books/Tutorial/essential/exceptions/finleally.html P>
Ça explique enfin très bien. P>
Ils notent que si la JVM sort, que le blocage enfin sera pas em> être appelé. Ou si un fil qui exécute le bloc de code est tué, le blocage enfin sera pas em> être appelé. Dans tous les autres cas, ce sera. P>
Si le JVM sort pendant que le code code> ou
Catch code> est exécuté, le bloc
enfin code> peut ne pas exécuter. De même, si le fil exécutant le fichier
essayer code> ou
le code code> est interrompu ou tué, le bloc
enfin code> peut ne pas exécuter même si l'application dans son ensemble continue. p> blockQuote>
Source: Java.sun.com: Tutorial Java: enfin bloquer p>
Prenez note du mot "mai" là-bas.
Une chose que je peux penser en ce moment est un OutofMemoryError code> auquel cas il est possible que aucun autre code de votre application puisse être exécuté. p>
Même dans le cas d'une exception exceptionnelle, le bloc enfin sera exécuté. L'exécution du blocage enfin peut-être peut-être bien sûr de causer un obstacle lui-même, mais cela peut également se produire, même si le bloc d'essai est terminé avec succès.
system.exit () code> empêchera un bloc
enfin code> de l'exécution de l'exécution. p>
Si une méthode d'interface native Java SEGFAULTS (une bibliothèque fonctionne à l'extérieur de Java mais appelée à partir de là des collisions) une méthode enfin ne sera pas non plus appelée car toute la JVM s'arrête. P>
Les erreurs dans la JVM elle-même entraînent également un accident et empêchent tout de l'exécution continue. P>
système.exit (1); Vous pouvez utiliser p>
BEFORE
La clause enfin dans le bloc d'exception try-Catch est toujours exécutée, quelle que soit la survenue d'exception dans le flux de programme Java normal. Si le flux d'exécution est arrêté avant la clause enfin, le blocage enfin ne sera pas exécuté. P>
Nous pouvons utiliser system.exit (1); code> avant de ne finalement bloquer et arrêter le flux d'exécution du programme. P>
Une autre situation que je peux penser (qui est laissée à partir des autres réponses) est quand une exception code> code> est lancée dans un bloc enfin code>, dans ce cas, dans ce cas le < code> enfin code> Bloquer ne sera pas "complètement" em> exécuté. p>
Si vous retirez la fiche de votre PC, le bloc enfin ne sera pas exécuté.