首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Python语法学习记录(22):程序的退出【sys.exit()与os._exit()】

  • 25-03-03 18:03
  • 2777
  • 11196
blog.csdn.net

在这里插入图片描述

概述

Python程序有两种退出方式:

import os
os._exit()
import sys
sys.exit()
  • 1
  • 2
  • 3
  • 4

os._exit() 本身不抛出异常,直接将python程序终止退出,之后的所有代码都不会执行。os._exit(n)退出的机制是调用 C 语言的 _exit() 函数。__builtin__.exit 是一个 Quitter 对象,这个对象的 __call__ 方法会抛出一个 SystemExit 异常。常用在子线程的停止中。

sys.exit() 会抛出一个异常: SystemExit,异常也是对象,所有异常都是基类Exception的成员。python的异常名称放在内建命名空间中,所以不必导入exception模块。如果这个异常没有被捕获,那么python解释器将会退出。如果有捕获该异常的代码,那么这些代码还是会执行。sys.exit(n)一般在交互式shell中退出时用到;n默认0,正常退出,可以捕获异常执行些清理工作。其他数值(1-127)为不正常,可抛异常事件供捕获。

一般来说os._exit() 用于在线程中退出。
sys.exit() 用于在主线程中退出。

举个例子

import os
try:
    os._exit(0)
except:
    print('Program is dead.')
  • 1
  • 2
  • 3
  • 4
  • 5

这个print是不会打印的,因为没有异常被捕获。

image-20201019160343468

import sys
try:
    sys.exit(0)
except:
    print('Program is dead.')
finally:
    print('clean-up')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这里两个print都可以打印,因为sys.exit()抛出了异常。

image-20201019160134936

结论

使用sys.exit()来退出程序比较优雅,调用它能引发SystemExit异常,然后我们可以捕获这个异常做些清理工作。而os._exit()将python解释器直接退出,后面的语句都不会执行。

一般情况下用sys.exit()就行;os._exit()可以在os.fork()产生的子进程里使用。

参考:

参考文献1

参考文献2

参考文献3

参考文献4

文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树基本技能操作系统和环境416632 人正在系统学习中
注:本文转载自blog.csdn.net的呆呆象呆呆的文章"https://blog.csdn.net/qq_41554005/article/details/109163578"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top