question
J'ai rencontré un problème aujourd'hui. Dans le code suivant, lorsqu'une exception d'exécution est lancée, le code suivant sera-t-il toujours exécuté? Dois-je ajouter une instruction return après l'exception?
public void add (int index, e élément) {if (size> = elements.length) {throw new RuntimeException ("La table d'ordre est pleine, ne peut pas être ajoutée"); //retour; // est-ce nécessaire? } ....}
Pour répondre à cette question, j'ai écrit quelques éléments de code pour le tester, et les résultats sont les suivants:
// Code 1Public static void test () lève une exception {lancer une nouvelle exception ("paramètre hors limites"); System.out.println ("après exception"); // Erreur de compilation, "déclaration inaccessible"} // Code 2Try {lancez une nouvelle exception ("Paramètre hors limites"); } catch (exception e) {e.printStackTrace ();} System.out.println ("après exception"); // peut être exécuté // code 3if (true) {lancez une nouvelle exception ("Paramètre hors limites"); } System.out.println ("après exception"); // l'exception est lancée, ne sera pas exécutéeRésumer:
Si une exception est lancée avant un morceau de code et que l'exception n'est pas capturée, ce morceau de code générera une erreur de compilation "Inaccessible instruction". Comme code 1
Si une exception est lancée avant un morceau de code, et que cette exception est capturée par try...catch , si aucune nouvelle exception n'est lancée dans l'instruction catch pour le moment, le code peut être exécuté, sinon, le même que l'article 1. Comme le code 2
Si une exception est lancée dans une déclaration conditionnelle, le programme peut être compilé, mais les instructions suivantes ne seront pas exécutées. Comme code 3
Résumez également la différence entre l'exception d'exécution et l'exception sans trottoir:
Les exceptions d'exécution sont des exceptions de RuntimeException et de ses sous-classes, et sont des exceptions non chéries, telles que NullPointerException , IndexOutOfBoundsException , etc. Étant donné que ces exceptions sont soit des exceptions système et ne peuvent pas être gérées, telles que les problèmes de réseau;
Soit il s'agit d'une erreur de logique de programme, comme une exception de pointeur nul; Le JVM doit cesser de fonctionner pour corriger cette erreur, de sorte que l'exception d'exécution peut être gérée sans être traitée (attraper ou jeter, bien sûr, il peut également être géré) et le JVM le gère lui-même. Java Runtime catch automatiquement à RuntimeException du throw du programme, puis arrêtez le fil et imprimez l'exception.
Les exceptions non runtimes sont des exceptions autres que RuntimeException . Ils appartiennent tous à Exception et à ses sous-classes en type, et sont des exceptions vérifiées. Les exceptions non-runtime doivent être traitées (capture ou lancement) et si elles ne sont pas traitées, le programme aura une erreur de compilation. D'une manière générale, Exception écrite dans l'API qui throws n'est pas RuntimeException .
Exceptions courantes d'exécution:
Exceptions communes sans troisième temps:
D'accord, ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article sera d'une aide à l'étude ou au travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer.