Did you know: Find out if an exception was thrown from a finally block!
This is a big biggie for me, because it enables a much nicer syntax for a lot of stuff. But first, let us show this:
using(new ExceptionDetector())
{
if(new Random().Next(1,10)%2 == 0)
throw new Exception();
}
How can you tell, from the ExceptionDetector, if an exception was thrown or not? Well, conventional wisdom, and what I thought about until 15 minutes ago, says that you can't. I want to thank Daniel Fortunov, for teaching me this trick:
public class ExceptionDetector : IDisposable
{
public void Dispose()
{
if (Marshal.GetExceptionCode()==0)
Console.WriteLine("Completed Successfully!");
else
Console.WriteLine("Exception!");
}
}
Amazing!