To add to Jon - correctly, of course, answer: you are actually describing a try-fault block. That is, the try-fault block is equivalent to try , followed by a catch total and automatic return.
C # does not support try-fault blocks, but CIL does, so if you ever read IL and see a fault block, now you know what it is.
Itβs also correct to say that
try{} catch {} finally {}
equivalently
try { try { } catch { } } finally { }
And actually inside the C # compiler what it does; all try-catch-finally blocks are overwritten into a nested try-catch inside try-finally. This is a simplifying assumption that can help when writing a static analyzer.
source share