I have created custom exception class
public class Web2PDFException : Exception
{
public Web2PDFException(string message, Exception innerException)
: base(message, innerException) { ... }
}
In my application how can I find out if it is my custom exception or not?
try { ... }
catch (Exception err)
{
//Find exception type here
}
try
{
// Some code
}
catch (Web2PDFException ex)
{
// It's your special exception
}
catch (Exception ex)
{
// Any other exception here
}
you can add some extra information to your exception in your class and then when you catch the exception you can control your custom information to identify your exception
this.Data["mykey"]="keyvalue"; //you can add any type of data if you want
and then you can get your value
string mystr = (string) err.Data["mykey"];
like that for more information: http://msdn.microsoft.com/en-us/library/system.exception.data.aspx
Alternative Solution
Instead halting a debug session to add some throw-away statements to then recompile and restart, why not just use the debugger to answer that question immediately when a breakpoint is hit?
That can be done by opening up the Immediate Window
of the debugger and typing a GetType
off of the exception and hitting Enter. The immediate window also allows one to interrogate variables as needed.
See VS Docs: Immediate Window
For example I needed to know what the exception was and just extracted the Name
property of GetType
as such without having to recompile:
Alternatively:
var exception = err as Web2PDFException;
if ( excecption != null )
{
Web2PDFException wex = exception;
....
}
try
{
}
catch (Exception err)
{
if (err is Web2PDFException)
DoWhatever();
}
but there is probably a better way of doing whatever it is you want.
When dealing with situations where I don't exactly know what type of exception might come out of a method, a little "trick" I like to do is to recover the Exception's class name and add it to the error log so there is more information.
try
{
<code>
} catch ( Exception caughtEx )
{
throw new Exception("Unknown Exception Thrown: "
+ "\n Type: " + caughtEx.GetType().Name
+ "\n Message: " + caughtEx.Message);
}
I do vouch for always handling Exceptions types individually, but the extra bit of info can be helpful, specially when dealing with code from people who love to capture catch-all generic types.
You should always catch exceptions as concrete as possible, so you should use
try
{
//code
}
catch (Web2PDFException ex)
{
//Handle the exception here
}
You chould of course use something like this if you insist:
try
{
}
catch (Exception err)
{
if (err is Web2PDFException)
{
//Code
}
}
Source: Stackoverflow.com