Quelqu'un peut-il expliquer comment fonctionne StackOverFlowError?Gestion de StackOverFlowError et récupération Java
Je sais qu'une récursion sans fin provoque StackOverFlowError, mais est-ce que toute autre méthode est exécutée une fois que la pile est pleine? J'ai géré l'erreur dans le bloc catch. Je voudrais savoir comment Java fonctionne ou récupère de l'erreur qui a été interceptée.
Exemple de code:
public class Test {
public static void main(String[] args) {
try {
show();
} catch(StackOverflowError e) {
System.out.println(e);
}
System.out.println("After StackOverFlowError");
display();
}
static void show() {
show();
}
static void display() {
System.out.println("Hello New Function");
}
}
Et la sortie est:
java.lang.StackOverflowError After StackOverFlowError Hello New Function
Généralement, vous ne récupérez pas de 'StackOverflowError', qui est une exception d'exécution. Si la récursion explose, c'est tout, corrigez votre code ou essayez de l'exécuter à nouveau dans des conditions différentes. –
Je pense que vous n'avez pas compris la question. StackOverFlowError a été délibérément généré pour comprendre comment cela fonctionne et comment Java s'en remet. Ma question est de savoir si, après une récursion sans fin, la pile est pleine, techniquement, aucune autre méthode ne devrait être poussée dans cette pile, alors comment est-ce que display() est appelé? Est-ce que java s'en est remis? – Divyanshi
Eh bien, vous avez attrapé l'exception, êtes-vous surpris par quelque chose? La récursivité est toujours morte, et si vous attendiez un résultat, vous ne l'auriez probablement pas. En règle générale, vous ne pouvez pas capturer une exception non contrôlée comme 'StackOverflowError' en pratique. –