Comment poursuivre l'exécution d'un programme java après qu'une Exception est levée?
Mon exemple de code est comme suit:
public class ExceptionsDemo {
public static void main(String[] args) {
try {
int arr[]={1,2,3,4,5,6,7,8,9,10};
for(int i=arr.length;i<10;i++){
if(i%2==0){
System.out.println("i =" + i);
throw new Exception();
}
}
} catch (Exception e) {
System.err.println("An exception was thrown");
}
}
}
Mon exigence est que, après l'exception est interceptée je veux traiter le reste des éléments de la matrice. Comment puis-je faire cela?
pourquoi avez-vous lancer une exception en premier lieu ?
Alors, en premier lieu, pourquoi voulez-vous lancer une exception si vous ne voulez pas faire n'importe quoi avec cette exception?
Déménager le try/catch à l'intérieur de la boucle. Ensuite, lorsque l'exception se produit, puisque vous êtes toujours à l'intérieur de la boucle, l'exécution se poursuit normalement.
pourquoi jeter une exception comme ça si vous voulez continuer, de toute façon ?
Alors, en premier lieu, pourquoi voulez-vous lancer une exception si vous ne voulez pas faire n'importe quoi avec cette exception?
Déménager le try/catch à l'intérieur de la boucle. Ensuite, lorsque l'exception se produit, puisque vous êtes toujours à l'intérieur de la boucle, l'exécution se poursuit normalement.
pourquoi jeter une exception comme ça si vous voulez continuer, de toute façon ?
for(int i=arr.length;i<10;i++)
Faire vous même entrer dans cette boucle? Je pense que vous vouliez dire for(int i=0; i<arr.length;++i)
OriginalL'auteur | 2012-02-17
Vous devez vous connecter pour publier un commentaire.
Votre code devrait ressembler à ceci:
OriginalL'auteur Java
Déplacer le bloc try catch à l'intérieur de la boucle et il devrait fonctionner
OriginalL'auteur Sandeep Nair
Vous avez besoin de re-structure légèrement, de sorte que le try/catch est à l'intérieur de la boucle for, de ne pas l'enfermer, par exemple
En aparté, vous devez éviter d'utiliser les exceptions pour le contrôle de flux comme ça - les exceptions doivent être utilisés pour des choses exceptionnelles.
OriginalL'auteur Flexo
Il suffit de ne pas lancer une exception, alors:
Ou de le jeter, et de l'attraper à l'intérieur de la boucle, plutôt qu'à l'extérieur (mais je ne vois pas le point de lancer une exception dans cet exemple trivial):
Côté remarque: voir la façon dont le code est beaucoup plus facile à lire quand c'est indenté correctement, et contient des espaces autour des opérateurs.
OriginalL'auteur JB Nizet
Vous ne pouvez pas le faire parce que votre tableau est défini au sein de l'essayer clause. Si vous voulez être en mesure d'accéder à la faire sortir de là. Aussi vous devriez peut-être en quelque sorte des magasins qui j'ai fait l'Exception dans l'Exception, de sorte que vous pouvez continuer.
OriginalL'auteur Ivaylo Strandjev