If when you say "empty try catch block", you mean literally:
try
{
}
catch
{
}
Then yes, when building with compiler optimizations turned on (that is, "release" mode), it will not emit any IL instructions. For example:
private void Test()
{
    try
    {
    }
    catch
    {
    }
}
Compiles to:
IL_0000:  ret
Which is the same as if it were an empty method.
However, when optimizations are turned off (that is, "debug" mode), it emits:
IL_0000:  nop         
IL_0001:  nop         
IL_0002:  nop         
IL_0003:  leave.s     IL_000A
IL_0005:  pop         
IL_0006:  nop         
IL_0007:  nop         
IL_0008:  leave.s     IL_000A
IL_000A:  nop         
IL_000B:  ret 
Whereas an empty method would be:
IL_0000:  nop         
IL_0001:  ret 
Whether or not these IL instructions are stripped when the JIT compiler is executed, I am not positive. But this would still only apply when compiling without compiler optimizations as with them turned on the try/catch is stripped out during the initial compile to IL before it hits the JIT compiler.
EDIT: I just realized I may not have actually answered the question:
In release mode, zero time is expended on an empty try/catch.
In debug mode, a non-zero time is expended on an empty try/catch as it still emits the necessary IL code for debugging/breakpoint purposes and requires some JIT compilation. However, it would be a negligibly small amount of time. Definitely nowhere near the neighbourhood of "10-55 milliseconds".