Gostaria de poder garantir que uma ação ocorra ao sair de um proc Tcl. Por exemplo, preciso fazer algo assim:
proc foo {} {
variable var
set saved $var
# some stuff
if {$failed} {
set var $saved
return
}
# more stuff
set var $saved
}
Existe uma maneira fácil de fazer isso, para que eu não tenha que repetir o código "exit" em cada return? Conceitualmente:
proc foo {} {
variable var
set saved $var
set do-at-return {set var $saved}
# some stuff
if {$failed} {
return
}
# more stuff
}
Onde do-at-return
seria executado sempre que foo
saísse.
Você provavelmente pode fazer coisas complicadas com um rastreamento de execução "leave", mas uma maneira mais fácil é envolver a parte relevante do corpo em uma instrução try/finally: