Exception

De Banane Atomic
Révision datée du 31 mai 2019 à 14:28 par Nicolas (discussion | contributions) (→‎Exemple)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigationAller à la recherche

Liens

Exemple

Cs.svg
try { /* ... */ }
catch (InvalidCastException icex) { /* ... */ }
// exception filter, si le test n'est pas valide: relance l'exception sans modifier la stacktrace
catch (Exception ex) when (ex.ParamName == "...") { /* ... */ }
catch (Exception ex) {
    throw;     // relance l'exception
    throw ex;  // relance l'exception, mais la stacktrace est écrasée
    throw new CustomException("Error message", ex);  // lance une nouvelle exception avec le précédente exception dans inner exception
}

ExceptionDispatchInfo

Permet de capturer une exception et sa StackTrace pour la relancer ensuite.

Cs.svg
catch (Exception ex)
{
    ExceptionDispatchInfo capturedException = ExceptionDispatchInfo.Capture(ex);
}

if (capturedException != null)
{
    capturedException.Throw();
}