Search code examples
c#custom-exceptions

What are industry standard best practices for implementing custom exceptions in C#?


What are industry standard best practices for implementing custom exceptions in C#?

I have checked Google and there's a great number of recommendations, however I don't know which ones hold more credibility.

If anybody has any links to authoritative articles, that would also be helpful.


Solution

  • The standard for creating custom exceptions is to derive from Exception. You can then introduce your own properties/methods and overloaded constructors (if applicable).

    Here is a basic example of a custom ConnectionFailedException which takes in an extra parameter which is specific to the type of exception.

    [Serializable]
    public class ConnectionFailedException : Exception
    {
        public ConnectionFailedException(string message, string connectionString)
            : base(message)
        {
            ConnectionString = connectionString;
        }
    
        public string ConnectionString { get; private set; }
    }
    

    In the application this could be used in scenarios where the application is attempting to connect to a database e.g.

    try
    {
        ConnectToDb(AConnString);
    }
    catch (Exception ex)
    {
        throw new ConnectionFailedException(ex.Message, AConnString);
    }
    

    It's up to you to then handle the ConnectionFailedException at a higher level (if applicable)

    Also have a look at Designing Custom Exceptions and Custom Exceptions