当前位置: 首页 > news >正文

【Python】第八课 异常处理

我们作为开发者,包括正在上班的开发工程师都不可能保证写好的程序运行不出现任何错误,但遇到一些占时没时间解决的错误,而又想让程序运行起来的时候,这个时候我们就需要用到我们现在需要学习的异常处理,将出现错误的代码暂时进行异常处理。

异常捕获可以使用try语句来实现,任何出现在try语句范围的异常都会被及时捕获到。try语句有两种实现方式:第一种是try-except,第二种是try-finally

8.1 try-except语句

其语法格式如下:

try:

检测范围

except Exception[as reason]

出现异常后的代码处理

#打开一个不存在的页面,出现找不到文件异常
try:
    f=open("不存在的文件.txt")
    print(f.read())
except:
    #捕获所有异常
    print("文件找不到哦,请仔细检查")

运行结果:文件找不到哦,请仔细检查

显示错误信息:

#打开一个不存在的页面,出现找不到文件异常
try:
    f=open("不存在的文件.txt")
    print(f.read())
except OSError as error:
    print("文件找不到哦,请仔细检查,错误的原因是:",str(error))

运行结果:文件找不到哦,请仔细检查,错误的原因是: [Errno 2] No such file or directory: '不存在的文件.txt'

针对不同异常设置多个except

try:
    num=1+"1"
    f=open("不存在的文件.txt")
    print(f.read())
except OSError as error:
    print("文件找不到哦,请仔细检查,错误的原因是:",str(error))
except TypeError as error:
    print("数据类型错误,错误的原因是:",str(error))

对多个异常统一管理

try:
    num=1+"1"
    f=open("不存在的文件.txt")
    print(f.read())
except (OSError ,TypeError) as error:
    print("数据类型错误,错误的原因是:",str(error))

8.2 try-finally语句

try:
    f=open("不存在的文件.txt")
    print(f.read())
    num=1+"1"
except :
    print("出错了")
finally:
    print("我来收尾吧")

8.3 raise 语句

抛出异常

raise ZeroDivisionError("除数不能为零")

在异常处理当中也能结合else语句一起使用,else语句不仅仅用在if中,也能用在while和for中。

相关文章:

  • Atomic Mail Sender 9.6.X 中文版Crack
  • 【重识云原生】第六章容器6.1.4节——Docker核心技术LXC
  • mysql—自增长和索引
  • 【C语言】带你深入剖析字符串相关知识(详细讲解+源码展示)
  • PostgreSQL 常用管理命令
  • Canny边缘检测数学原理及Python代码实现
  • 代码解析MixFormer: Mixing Features across Windows and Dimensions
  • 墨者-网络安全
  • Thread类的基本用法
  • Vue——方法与事件、 样式绑定、数据绑定、面试题、笔试题
  • DCDC Bootstrap自举电路
  • 练习前端案例
  • Completed 404 NOT_FOUND,Whitelabel Error Page
  • 微信公众号多题库查题系统
  • Vue事件
  • conda常用的命令
  • ES6系列(二)变量的解构赋值
  • Java基本数据类型之Number
  • Laravel 中的一个后期静态绑定
  • linux安装openssl、swoole等扩展的具体步骤
  • MYSQL 的 IF 函数
  • Node项目之评分系统(二)- 数据库设计
  • October CMS - 快速入门 9 Images And Galleries
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • vue-router的history模式发布配置
  • yii2中session跨域名的问题
  • 动态魔术使用DBMS_SQL
  • 对JS继承的一点思考
  • 给Prometheus造假数据的方法
  • 技术:超级实用的电脑小技巧
  • 时间复杂度与空间复杂度分析
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 线性表及其算法(java实现)
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • NLPIR智能语义技术让大数据挖掘更简单
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​你们这样子,耽误我的工作进度怎么办?
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • $(selector).each()和$.each()的区别
  • (12)Linux 常见的三种进程状态
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (分布式缓存)Redis持久化
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (强烈推荐)移动端音视频从零到上手(下)
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (五)关系数据库标准语言SQL
  • (转)http-server应用
  • (转)用.Net的File控件上传文件的解决方案
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .apk 成为历史!
  • .NET 2.0中新增的一些TryGet,TryParse等方法