I could have sworn there was such a question just a few days ago, but I cannot find it ...
Just adding a try / catch block is unlikely to noticeably change performance if exceptions are not thrown, although this may prevent the method from being inlined. (There are different nesting rules in different versions of the CLR; I cannot remember the details.)
The real expense is when the exception is actually thrown - and even that expense is usually inflated. If you use exceptions appropriately (that is, only in truly exceptional or unforeseen situations with errors), then they are unlikely to be a significant performance hit, unless your service is too started to be considered "running" in any case.
As for whether to use try / catch blocks as much as possible - absolutely not! Usually you should only catch the exception if you can handle it, which is relatively rare. In particular, simply swallowing an exception is almost always the wrong thing.
I write many more try / finally blocks (in fact - almost always using using statements) than try / catch blocks. Try / catch sometimes comes up at the top level of the stack, so the service can continue to process the next request, even if it fails, but otherwise I rarely get exceptions. Sometimes itโs worth grabbing one exception to wrap it in another exception โ basically translating the exception rather than handling it.
Jon skeet
source share