Lance worries about people declaring a variable in their catch statement when it is not used in the catch block.
There is already a solution to this: compile as warning level 4, and treat warnings as errors. That will pick up this error for you.
I would recommend always building at level 4 and treating warnings as errors. This will let you lean on the compiler to help you create clean code.
In addition beware the other two evils of exception handling: using throw ex; instead of throw; which means the call stack will now be from this throw point, not the point the exception was raised, and swallowing exceptions (in other words catching something you do not know how to resolve). Always prefer fail-fast to catching an exception. You want to know about your errors, not hide them. Only software that needs to remain up in the presence of errors should have a swallowing exception block and even then you need to at least log that the exception happened and understand the exception guarantees enough to be sure of how to proceed.