2016-05-03 1 views
0

J'écris une boucle qui a ignoré le Exception et cela fonctionne bien.try-finally bloquer continuer pour la boucle

for (; flag;) { 
     try { 
      //do something ignore exception. 
      Runnable r = queue.pollFirst(); 
      r.run(); 
     } catch (Exception ignored) { 
      // ignored. 
     } 
    } 

Mais ma question est: Si je ne prise RuntimeException et la force continuent boucle dans bloc finally, ce qui va arriver à l'exception et valeur retournée?

Exemple:

for (int i = 0; i < 10; i++) { 
     try { 
      System.out.println(i); 

      throw new RuntimeException(); 
     } finally { 
      //what will happen to the exception if continue loop? 
      continue; 
     } 
    } 
+0

Les résultats continuent dans l'exception ou la valeur de retour est ignorée. Vous pouvez facilement tester cela. –

+1

@PeterLawrey: même si je suis d'accord avec vous que ce n'est pas une bonne question, juste essayer quelque chose ne garantit pas que le comportement observé est ce qui se passe dans tous les cas – Oebele

+0

@PeterLawrey Je sais que les exceptions sont ignorées. Cela va-t-il causer un problème? fuite de mémoire ou dépassement de pile ou quelque chose. – lymoge

Répondre

2

Ils seront ignored que le bloc finally a le mot final.

0

Vous ne savez pas pourquoi vous souhaitez attraper une exception RuntimeException car, au moment même où vous essayez de l'attraper, il est trop tard pour que votre continue ne soit jamais atteinte.

1

L'exception d'exécution sera ignorée car il n'y a pas de bloc catch pour accéder/utiliser (par exemple pour la consignation) l'objet java.lang.RuntimeException. finally block n'a aucun accès à l'objet Exception lancé par try block. Il est préférable d'avoir un bloc catch pour obtenir plus d'informations.