"There should only be one exit from a procedure. Never have multiple Exit Subs (or Exit Functions) throughout your procedure. If you need to exit early, do a GoTo ExitProcedure label instead."

The above is a school of thought that I have encountered from time to time (and I have started to blindly adopt) however I can't recall ever seeing any clear reason provided on the benefits of doing so.

Could anyone please explain what the benefit/s is/are?

(Optional question: Did this practice arise from another earlier language? If so, I'd be interested in knowing the background).