raise
and 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 except
.
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 raise
ing of the exception that triggers it.