Consider the following code:
if x < 10:
if __name__ == "__main__":
f(5) # f(20)
return are two inherently different keywords.
raise, commonly known as
throw in other languages, produces an error in the current level of the call-stack. You can catch a raised error by covering the area where the error might be raised in a
try and handling that error in an
try: if something_bad: raise generate_exception() except CertainException, e: do_something_to_handle_exception(e)
return on the other hand, returns a value to where the function was called from, so returning an exception usually is not the functionality you are looking for in a situation like this, since the exception itself is not the thing triggering the
except it is instead the
raiseing of the exception that triggers it.