9
votes

Est-il possible que un bloc enfin ne soit pas exécuté?

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é.

et si System.exit () est appelé en essayant ou en attraper, puis l'est également appelé?


1 commentaires

Si vous retirez la fiche de votre PC, le bloc enfin ne sera pas exécuté.


9 Réponses :


3
votes

dans la documentation Java:

http://java.sun.com/docs /books/Tutorial/essential/exceptions/finleally.html

Ça explique enfin très bien.

Ils notent que si la JVM sort, que le blocage enfin sera pas être appelé. Ou si un fil qui exécute le bloc de code est tué, le blocage enfin sera pas être appelé. Dans tous les autres cas, ce sera.


0 commentaires

24
votes

Si le JVM sort pendant que le code ou Catch est exécuté, le bloc enfin peut ne pas exécuter. De même, si le fil exécutant le fichier essayer ou le code est interrompu ou tué, le bloc enfin peut ne pas exécuter même si l'application dans son ensemble continue.

Source: Java.sun.com: Tutorial Java: enfin bloquer


1 commentaires

Prenez note du mot "mai" là-bas.



2
votes

Une chose que je peux penser en ce moment est un OutofMemoryError auquel cas il est possible que aucun autre code de votre application puisse être exécuté.


1 commentaires

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.



6
votes

system.exit () empêchera un bloc enfin de l'exécution de l'exécution.


0 commentaires

0
votes

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.

Les erreurs dans la JVM elle-même entraînent également un accident et empêchent tout de l'exécution continue.


0 commentaires

1
votes

système.exit (1); Vous pouvez utiliser


0 commentaires

3
votes
BEFORE

0 commentaires

0
votes

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é.

Nous pouvons utiliser system.exit (1); avant de ne finalement bloquer et arrêter le flux d'exécution du programme.


0 commentaires

0
votes

Une autre situation que je peux penser (qui est laissée à partir des autres réponses) est quand une exception est lancée dans un bloc enfin , dans ce cas, dans ce cas le < code> enfin Bloquer ne sera pas "complètement" exécuté.


0 commentaires