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 1:
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
Solution 2:
Here is the code to create a custom exception:
using System;
using System.Runtime.Serialization;
namespace YourNamespaceHere
{
[Serializable()]
public class YourCustomException : Exception, ISerializable
{
public YourCustomException() : base() { }
public YourCustomException(string message) : base(message) { }
public YourCustomException(string message, System.Exception inner) : base(message, inner) { }
public YourCustomException(SerializationInfo info, StreamingContext context) : base(info, context) { }
}
}
See also: http://www.capprime.com/software_development_weblog/2005/06/16/CreatingACustomExceptionClassInC.aspx
Solution 3:
I assume you are looking for exception handling practices. So have look on following articles,
http://msdn.microsoft.com/en-us/library/ms229014.aspx //gives overall ideas about exceptions including custom exceptions
http://blogs.msdn.com/b/jaredpar/archive/2008/10/20/custom-exceptions-when-should-you-create-them.aspx //