Is there any difference between return and raise an Exception? : <p>Consider the following code:</p>

<pre><code>    def f(x):
        if x &lt; 10:
            return Exception("error")
        else:
            raise Exception("error2")

    if __name__ == "__main__":
        try:
            f(5)                        # f(20)
        except Exception:
            print str(Exception)
</code></pre>

<p>Is there any difference?
When should I use return Exception and When should I use raise?</p>
