order of exception handling in c#