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
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…