import os,sys,time def test_exit(): try: for i in range(10): time.sleep(0.5) print(i) fun(i) print 'eeeee' except: print(sys.exc_info()[0]) print(sys.exc_info()) print 'clean' def fun(item): if item>2: sys.exit(1) #可执行clean #exit(2) #可执行clean #quit(3) #可执行clean #os._exit(5) #不执行clean if __name__=='__main__': test_exit()注意,虽然能捕获SystemExit异常,执行clean,但是整个脚本的退出码还是0
Python 脚本退出
return:在定义函数时从函数中返回一个函数的返回值,终止函数的执行。
os._exit(),sys.exit(),exit(),quit()都能够退出当前执行脚本,差别在于os._exit()直接退出,sys.exit(),exit(),quit()始终会抛出一个SystemExit异常。如果不捕获异常,看起来的效果和 os._exit() 一样,不会有任何意外的信息,但也可以捕获这些异常来做一些清理的工作