What does raise do, if it's not inside a try or except clause, but simply as the last statement in the function?
def foo(self):
    try:
        # some code that raises an exception
    except Exception as e:
        pass
    # notice that the "raise" is outside
    raise
This example prints 1 but not 2 so it must be that the last raise statement simply raises the last thrown exception.
def foo():
    try:
        raise Exception()
    except Exception as e:
        pass
    print 1
    raise
    print 2
if __name__ == '__main__':
    foo()
Any official documentation for this type of usage pattern?
 
     
     
     
     
     
    