As you can see from the source the problematic part of this technique is choosing the place at which the flag is reset. You could either have the callee or the caller do that.
Also this technique is not suitable for multithreading.
The programming language supports some form of error handling. This ranges from the classic
ON ERROR GOTO ... from early Basic dialects to the
try ... catch exceptions handling from modern object oriented languages.
The idea is always the same: you register some part of your program as error handler to be called whenever an error happens. Modern designs allow you to define more than one handler to handle different types of errors separately.
Once an error occurs the execution jumps to the error handler and continues there.