• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

SOC/IP验证工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

Python中退出程序的方法

Python程序有两种退出方式: os._exit() 和 sys.exit()。
os._exit() 会直接将python程序终止,之后的所有代码都不会执行。
sys.exit() 会抛出一个异常: SystemExit,如果这个异常没有被捕获,那么python解释器将会退出。如果有捕获该异常的代码,那么这些
代码还是会执行。
例如
import os try:os._exit(0) except:print('Programisdead.')
这个print是不会打印的,因为没有异常被捕获。

import sys try:sys.exit(0) except:print('Programisdead.') finally:print('clean-up')
这里两个print都可以打印,因为sys.exit()抛出了异常.

return:在定义函数时从函数中返回一个函数的返回值,终止函数的执行。
os._exit(),sys.exit(),exit(),quit()都能够退出当前执行脚本,差别在于os._exit()直接退出,sys.exit(),exit(),quit()始终会抛出一个SystemExit异常。如果不捕获异常,看起来的效果和 os._exit() 一样,不会有任何意外的信息,但也可以捕获这些异常来做一些清理的工作

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.

posted on 2022-08-26 23:59  SOC验证工程师  阅读(7043)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3