2009-10-06 6 views
0

Selon la directive de conception, l'exception de capture doit commencer par une exception de spécification de System.Exception. Appel de pile dans la gestion des exceptions

comme:

try 
{ 


} 
catch(IOException IOEx) 
{ 
} 
catch(ArrayIndexOutOfRangeException AIE) 
{ 
} 
..... 
catch(Exception ex) 
{ 
} 

I entendu que CLR suit la pile de tracer l'exception une par une pour trouver la correspondance une (si une erreur se produit). Comme la pile est "dernier entré, premier sorti" dans la nature ne sera pas CLR regarder dans l'ordre inverse? (C.-à-Exception .. ArrayIndexOutOfRangeException .. IOException)

Répondre

4

Non - la pile dans ce cas est la pile d'appel, donc si elle ne trouve pas un gestionnaire dans la méthode actuelle, il se déplace la pile chercher un gestionnaire. Cependant, dans une méthode particulière, les gestionnaires sont testés dans l'ordre dans lequel ils sont spécifiés.

Questions connexes