hi can any one tell me how to write user defined exceptions in C#?As we have in Java can we write in C#?
+13
A:
You want to inherit from System.Exception
and preferrably provide (at minimum) the same public constructors and pass the parameters on to the base constructors. Add the relevant properties and/or methods you deem appropriate for your particular need.
public class MyException : System.Exception
{
public MyException() : base() { }
public MyException(string message) : base(message) { }
public MyException(string message, Exception innerException) : base(message, innerException) { }
}
Anthony Pegram
2010-10-04 04:03:47
According to the .NET Framework Design Guidelines, you are supposed to inherit directly from Exception unless you have a really good reason to pick something else.
Jonathan Allen
2010-10-04 05:16:04
@Jonathan: All systems back to normal. Deleted my stupid answer and removed my useless comment. Upvoted the answer in the name of SO spirit. Thanks for correction.
this. __curious_geek
2010-10-04 05:21:08
+4
A:
It is practically the same as it is in Java - you extend the Exception
class.
In the most basic form.
public class CustomException : System.Exception
{
public CustomException()
{
}
public CustomException(string message)
: base(message)
{
}
public CustomException(string message, System.Exception innerException)
: base(message, innerException)
{
}
}
To this, then add the data that you want to capture using either fields or properties.
Out of interest, before answering this question, I checked the Microsoft Design Guildlines on Custom Exceptions. Designing Custom Exceptions (MSDN)
- Avoid deep namespace hierarchies.
- If possible, derive from one the provided common base exceptions, i.e.,
ArgumentException
. HOWEVER Do not derive fromApplicationException
. It is not harmful, it is no point in doing so. MSDN Blog Post on ApplicationException. - Use the "Exception" suffix.
- Make exceptions serializable by implementing the
ISerializable
interface. Apparently an exception must be serializable to work correctly across application domain and remoting boundaries. - Store security-sensitive information in a private exception state, add a SecurityPermission attribute to ensure that only trusted code can get the information.
I recommend reading the Design Guidelines provided on MSDN. They are an interesting read.
Dennis Roche
2010-10-04 04:45:53