So then why is it documented that inside the routine there is an implicit try/finally? Should we duplicate that anyway?
The implicit
try … finally only protects managed variables used inside the function, not manually instantiated object instances, so yes, one needs to duplicate them.
Frankly, does one need a try finally on such trivial code ?
If you can be sure that neither the property getter/setter nor the
ShowMessage will raise an exception then (and only then) you can leave out the explicit
try … finally. However even then
I would add it nevertheless to be future proof in case these assumption ever change.