Using Exceptions this way in Python code is common practice and considered "Pythonic" and it's different than goto:
- an Exception only can bubble up the call stack, not to an arbitrary location in the code
- it can be caught whatever level during that path