Maybe I misunderstand you, but the exception in the OP's example was definitely caught and not rethrown. That's often unavoidable if you want to recover and continue from the exception but nevertheless want to document that there was an exception. Same happens if the exception happened in a worker thread.
(And in before "just swallow it" - nope. I've frequently found bugs by monitoring non-fatal exceptions).
I agree though that catching, logging and then immediately rethrowing exceptions is redundant.
> What? Perhaps in some programming languages, but catching exceptions globally in C# works just fine.
I think what sesm means (as do I) is this situation:
try { a(); }
catch (ex) { log_warn(ex); }
return b();
Right now, the function will continue executing and return a value even if an exception occurred, which sometimes is desirable. If you removed the catch block, nothing after a() will be executed.