It has 2 purposes.
It’s used for raising your own errors.
if something: raise Exception('My error!')
The second is to reraise the current exception in an exception handler, so that it can be handled further up the call stack.
try: generate_exception() except SomeException as e: if not can_handle(e): raise handle_exception(e)