Consider the following code:
def f(x):
if x < 10:
return Exception("error")
else:
raise Exception("error2")
if __name__ == "__main__":
try:
f(5) # f(20)
except Exception:
print str(Exception)
Is there any difference? When should I use return Exception and When should I use raise?
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 .
An application that uses exceptions is more robust than an application that uses return codes. An application that uses exceptions can also give the cleanest code, since return codes don't have to be checked after every call.
Raising an exception is a technique for interrupting the normal flow of execution in a program, signaling that some exceptional circumstance has arisen, and returning directly to an enclosing part of the program that was designated to react to that circumstance.
Raise Exception is when you find an error and want to raise it. Exception handler is to catch exceptions raised by you or the system and handle them gracefully.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With