Recently I uploaded some C# training material which helps you to learn C# in 60 days, its free, if interested you can get from C# training for freshers . By seeing these videos one of the fresher’s who was learning c# asked us what’s the difference between “Throw” and “Throw ex”.
“Throw” propagates the full stack information to the caller, while “Throw ex” excludes stack information from the point where you called “Throw ex”.
For instance let’s say you have a “Main” method which calls “Method2” and “Method2” calls “Method1”. Now in “Method2” if you handle exception by using just “Throw”, it will propagate the complete stack error to the main method.
If you add “ex” i.e. if you use “Throw ex” it will propagate stack information only from “Method2”.
You can download the sample code from and see the difference by changing “Throw” to “Throw ex” and vice versa to see the difference.
You can also see a sample video for the same as follows: –
There is one more very much connected questions where C# developers are confused C# interview questions: – What is exception bubbling in C#? which I faced in a recent C# interview at Accenture.