try { WebId = new Guid(queryString["web"]); } catch (FormatException) { WebId = Guid.Empty; } catch (OverflowException) { WebId = Guid.Empty; } Is there a way to catch both exceptions and only set WebId = Guid.Empty once? The given example is rather simple, as it's only a GUID, but imagine code where you modify an object multiple times, and if one of the manipulations fails as expected, you ... I think that this only works if you raise and then catch the exception, but not if you try getting the traceback before raising an exception object that you create, which you might want to do in some designs.

Understanding the Context

If you re-throw an exception within the catch block, and that exception is caught inside of another catch block, everything executes according to the documentation. When is finally run if you throw an exception from the catch block? Note that most crashes are not caused by exceptions in C++. You can catch all exceptions, but that won't prevent many crashes.

Key Insights

Are there situations where it is appropriate to use a try-finally block without a catch block? write-host 'CommandNotFoundException' } catch { write-host 'well, darn' } That output 'CommandNotFoundException' correctly. I vaguely remember reading elsewhere (though I couldn't find it again) of problems with this. In such cases where exception filtering didn't work correctly, they would catch the closest Type they could and then use a switch. How can I catch multiple exceptions in one line?

Final Thoughts

(in the "except" block) Asked 14 years, 9 months ago Modified 7 months ago Viewed 1.7m times