Jump to content

Throwing Exception In C#

Posted on:April 20, 2017 at 02:00 AM

In C# there are 3 of ways to throw an exception.

Our sample:

I will make changes in line 30 (purple box) and catch exception in parent method in simple try{} catch(Exceptiop e){} block. Method throwing actual exception is called ThrowExceptionMethod() and is not shown here for simplicity. ThrowExceptionMethod() throw NotImplementedException.


throw is the most common, shortest and preferred way to throw exceptions in C#.As we can observe exception Message is set to “The method or operation is not implemented”. The stack trace contain ThrowExceptionMethod() and this is excellent because the origin of the error preserved.

This is the preferred way of throwing exception in C#

throw exc

throw exc is behaving differently. The exception message is still preserved, but we lost the trace to the source. Instead, we have line number where we throw exc. I can barely imagine a situation where this is useful. Maybe if we want to hide the original exception place. This could be useful if we don’t want to expose implementation details in code.

throw new Exception

throw new Exception() is widely used when we need to pack inner exception in our custom exception type. Otherwise throw should be used. Here we also have stack trace (inside inner exception).

Quality - where are you!!!

FxCop has rule CA2200: Rethrow to preserve stack details that can be set so we can ensure all developers will rethrow :)