« Exception » : différence entre les versions

De Banane Atomic
Aller à la navigationAller à la recherche
 
Ligne 38 : Ligne 38 :
}
}
</kode>
</kode>
= [https://learn.microsoft.com/en-us/dotnet/standard/exceptions/how-to-create-user-defined-exceptions User-defined exceptions] =
<filebox fn='MyException.cs'>
public class MyException : Exception
{
    public MyException()
    {
    }
    public EmployeeListNotFoundException(string message)
        : base(message)
    {
    }
    public EmployeeListNotFoundException(string message, Exception inner)
        : base(message, inner)
    {
    }
}
</filebox>

Dernière version du 12 juin 2024 à 11:47

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
}

Argument Exception

Cs.svg
public void MyMethod(string argument1)
{
    ArgumentException.ThrowIfNullOrEmpty(argument1, nameof(argument1));
}

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();
}

User-defined exceptions

MyException.cs
public class MyException : Exception
{
    public MyException()
    {
    }

    public EmployeeListNotFoundException(string message)
        : base(message)
    {
    }

    public EmployeeListNotFoundException(string message, Exception inner)
        : base(message, inner)
    {
    }
}