There are certain cases where using Goto and Lbl may be necessary, but there are usually alternatives (except for when using Menu().
For instance, you could just place your cleanup code at the end of your program so that it will always run after the program control flow exits. Example:
0→E // exit code
0→S // program state
Repeat E
// Code that executes every loop goes here
If S=0 // case 0
Then
Prompt B
If B=3
1→S
End
If S=1 // case 1
Then
Disp "EXITING NOW
1→E
End
End
// Cleanup code here
DelVar EDelVar SDelVar B
This is a simple implementation of a finite-state machine, which allows you to jump between different blocks of code ("states") based on transition conditions. The main loop runs continuously until the exit variable (E in this case) is set, and executes the code in the current state (S). This structure allows you to effectively re-use sections of code without Gotos.