J'ai imbriqué try-catch
bloque dans un code C # personnalisé pour SharePoint. Je veux exécuter le code dans un seul bloc catch
(celui interne) lorsque le code à l'intérieur du bloc try
intérieur lève une exception.
try
{
//do something
try
{
//do something if exception is thrown, don't go to parent catch
}
catch(Exception ex) {...}
}
catch(Exception ex)
{ .... }
Je sais que je peux utiliser différents types d'exceptions, mais ce n'est pas ce que je recherche.
Résumé
Si une exception se produit, je ne veux pas qu'elle atteigne le parent catch
en plus du catch
intérieur.
Si vous ne souhaitez pas exécuter l'exception externe dans ce cas, vous ne devez pas lever l'exception à partir du bloc catch interne.
try
{
//do something
try
{
//do something IF EXCEPTION HAPPENs don't Go to parent catch
}
catch(Exception ex)
{
// logging and don't use "throw" here.
}
}
catch(Exception ex)
{
// outer logging
}
Le catch
externe ne se déclencherait pas si le catch
interne gérait l'exception
Si vous voulez que le catch
externe se déclenche également, vous devez faire:
try
{
//do something
try
{
//do something
}
catch(Exception ex)
{
// do some logging etc...
throw;
}
}
catch(Exception ex)
{
// now this will be triggered and you have
// the stack trace from the inner exception as well
}
Essentiellement, comme vous avez maintenant le code, le catch
externe ne sera pas déclenché à partir du try {} catch {}
Interne