Bonjour,
Voici un petit morceau de code quie se trouve dans la methode page_load (code behind d'une page aspx):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
try
{
try
{ //cherche l'utilisateur dans le premier groupe
privilegiedWebsite.web.Groups[SPUtility.GetLocalizedString("$Resources:userCraGroup", "CRA", website.web.Language)].Users[user];
}
catch (UnauthorizedAccessException e)
{//cherche l'utilisateur dans le second groupe
string test3 = "test42";
}
}
catch (Exception e)
{
int u = 0;
}
} |
N'ayant pas les droits suffisants, je ne dois pas pouvoir acceder a "users" dans la ligne
privilegiedWebsite.web.Groups[SPUtility.GetLocalizedString("$Resources:userCraGroup", "CRA", website.web.Language)].Users[user];
Une exception Unauthorizedaccessexception est renvoye, et je la catch avec succes. Jusqu'ici tout est normal.
Cependant, meme si dans mon premier catch je ne renvoi pas d'exception, je parviens a recatcher une exception dans le deuxieme catch, comme si une nouvelle exception avait ete renvoyee. Si je rajoute un niveau de try/catch, je vais encore recatcher une exception, ceci a l'infini....
Au final, mon code juste apres avoir catche une "unauthorizedAccessException" ne s'exécute pas, et le prochain code exécuté est la méthode "page_unload" de ma page aspx.
J'en ai déduit que des qu'une exception de type unauthorizedaccessexception était levée, ca remontait toute la stack, puis ça sautait sur le unload de ma page sans exécuter le reste de mon code pour des raison de sécurité. (j'ai le droit a une belle page "accès refuse" au final).
Quelqu'un peut-il confirmer ou infirmer ma théorie et éventuellement explique en détail le mécanisme?
Merci par avance.
PS: C'est vraiment pour comprendre le mécanisme, je ne suis pas bloqué par ceci 
EDIT: j'ajoute que si dans mon premier catch, je fait un throw(new exception("coucou")), c'est l'exception "fantôme" que j'intercepte dans le 2eme catch, et non pas l'exception que j'ai throwé
Partager