You need to use a global jump buffer, because it needs to be visible to your "clients". You could, for example, save the old jump buffer in a try block, and restore it after its use.
In general, I would not recommend this approach at all, though. Trying to retrofit features into a language is fraught with peril, not the least of which would be the following code:
for ;; {
TRY {
if (someVar) {
break;
}
}
FINALLY {
doIt()
}
ETRY
}