J'ai eu une exception dans certains codes aujourd'hui: "A [une exception] a été non endommagé." P>
Cependant, ce code était clairement à l'intérieur du bloc "Essayez" d'une structure "Essayer / Catch". P>
Qu'est-ce que je manque ici? P>
6 Réponses :
La déclaration de capture spécifie-t-elle un type d'exception spécifique? P>
Si c'est le cas, il ne tirera que ce type d'exception. P>
J'attrape "Exception". Est-ce que tous ne dérivent pas de cela?
Pas nécessairement, essayez de ne rien spécifier du tout dans le bloc de capture.
Étiez-vous en train de courir dans un débogueur avec "pause sur des exceptions" / "rupture sur jetée" allumée? Dans ce cas, vous verrez l'exception avant qu'il ne soit transmis à l'essai / prise. P>
C'était dans le débogueur, oui. Cela pourrait être ça. Dans Visual Studio, est-ce qu'un cadre quelque part?
Quand vous avez obtenu l'exception, pouvez-vous continuer puis voir cela aller dans l'essai / attraper? Les paramètres d'exception sont normalement sous "débogage-> exceptions". Selon la langue, vous pouvez faire différentes choses.
J'ai 10 dollars qui disent que c'est une exception filetabortException ou une autre exception d'auto-lanceur. Si tel est le cas, vous devez saisir l'exception deux fois. P>
Sans connaître la langue, il est difficile de dire, mais de nombreuses langues ont le concept d'exceptions qui ne peuvent pas être attrapées - par exemple en .NET, OutofMemoryException et exécutenanceException (entre autres) ne peuvent être attrapées, car elles sont essentiellement non récupérables. p>
Certains problèmes causés par une récursion, tels que StackoverFlow Exceptions et similaires, je vais jeter à l'intérieur d'essayer ... des blocs de capture car ils ne sont pas réellement jetés à partir d'une ligne de code particulière dans le bloc, mais plutôt par le CLR. Cela est également vrai pour la mémoire des exceptions de mémoire et d'autres problèmes qui ne sont pas le résultat direct d'une ligne de code. P>
Peut-être que vous parlez de quelque chose comme ceci: p>
p>
Les exceptions non gérées ne seront pas attrapées par prises (exception e), vous pouvez essayer un au lieu de p>
Quelle langue / cadre utilisez-vous?
Si vous publiez votre code, il pourrait être plus facile de diagnostiquer votre problème.
Besoin de plus d'informations. Essayez de poster des OCDE.
En C ++, si vous n'acceptez pas SEH (Manipulation de l'exception structurée), des événements spécifiques à de basse niveau système d'exploitation tels que des exceptions arithmétiques ne seront pas pris dans le bloc de captures.
Comme il est possible que vous puissiez ajouter des détails sur quelle hypothèse que vous avez faite ou quel concept vous aviez mal compris? De cette façon, une personne qui lutte avec le même problème peut avoir une chance de trouver la résolution.