Python 异常处理-Python零基础入门教程
目录
- 一.Python 异常处理简介
- 二.Python 异常捕获方式
- 1.捕获所有异常
- 2.捕获指定异常
- 3.捕获多个异常
- 4.万能的异常捕获
- 5.异常中的 else
- 6.异常中的 finally
- 7.raise 主动触发异常
- 三.猜你喜欢
零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门
在 Python 开发中,代码书写时难免有疏忽或者意向不到的 bug ,导致程序 run 的过程中有可能会直接崩溃;
然后对于程序猿而言,程序因 bug 崩溃是家常便饭,为了增加程序的健壮性,防止程序崩溃,我们可以对程序的有可能发生崩溃的代码增加异常处理,以达到程序稳健运行的目的。
一.Python 异常处理简介
一般情况,Python 无法正常处理程序时,就是会产生异常造成程序崩溃,举个例子:
1.大家都知道分母不能为 0,如果分母为 0,程序必然崩溃;
x = 3/0程序崩溃/报错:ZeroDivisionError: division by zero
2.假如 Python 文件读写 中,我们讲解了文件的读写操作,如果我们对一个不存在的文件读取内容,程序必然也会崩溃;
# 读取123.txt文件,实际上该文件并不存在
fp =open("123.txt","r")程序崩溃/报错:FileNotFoundError: [Errno 2] No such file or directory: '123.txt'
对于以上的各种异常情况,我们可以通过 try…except…解决,那么具体有哪些异常能捕获呢?如下所示:
- 1.BaseException — 所有异常的基类
- 2.SystemExit — 解释器请求退出
- 3.KeyboardInterrupt — 用户中断执行(通常是输入^C)
- 4.Exception — 常规错误的基类
- 5.StopIteration — 迭代器没有更多的值
- 6.GeneratorExit — 生成器(generator)发生异常来通知退出
- 7.StandardError — 所有的内建标准异常的基类
- 8.ArithmeticError — 所有数值计算错误的基类
- 9.FloatingPointError — 浮点计算错误
- 10.OverflowError — 数值运算超出最大限制
- 11.ZeroDivisionError — 除(或取模)零 (所有数据类型)
- 12.AssertionError — 断言语句失败
- 13.AttributeError — 对象没有这个属性
- 14.EOFError — 没有内建输入,到达 EOF 标记
- 15.EnvironmentError — 操作系统错误的基类
- 16.IOError — 输入/输出操作失败
- 17.OSError — 操作系统错误
- 18.WindowsError — 系统调用失败
- 19.ImportError — 导入模块/对象失败
- 20.LookupError — 无效数据查询的基类
- 21.IndexError — 列中没有此索引(index)
- 22.KeyError — 映射中没有这个键
- 23.MemoryError — 内存溢出错误(对于 Python 解释器不是致命的)
- 24.NameError — 未声明/初始化对象 (没有属性)
- 25.UnboundLocalError — 访问未初始化的本地变量
- 26.ReferenceError — 弱引用(Weak reference)试图访问已经垃圾回收了的对象
- 27.RuntimeError — 一般的运行时错误
- 28.NotImplementedError — 尚未实现的方法
- 29.SyntaxError — Python 语法错误
- 30.IndentationError — 缩进错误
- 31.TabError — Tab 和空格混用
- 32.SystemError — 一般的解释器系统错误
- 33.TypeError — 对类型无效的操作
- 34.ValueError — 传入无效的参数
- 35.UnicodeError — Unicode 相关的错误
- 36.UnicodeDecodeError — Unicode 解码时的错误
- 37.UnicodeEncodeError — Unicode 编码时错误
- 38.UnicodeTranslateError — Unicode 转换时错误
- 39.Warning — 警告的基类
- 40.DeprecationWarning — 关于被弃用的特征的警告
- 41.FutureWarning — 关于构造将来语义会有改变的警告
- 42.OverflowWarning — 旧的关于自动提升为长整型(long)的警告
- 43.PendingDeprecationWarning — 关于特性将会被废弃的警告
- 44.RuntimeWarning — 可疑的运行时行为(runtime behavior)的警告
- 45.SyntaxWarning — 可疑的语法的警告
- 46.UserWarning — 用户代码生成的警告[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QaPnrCEr-1622213823637)(blob:https://www.codersrc.com/d6c5ed6d-6da0-4e59-bd44-380ff6d8db5d “Python 异常处理-猿说编程”)]
二.Python 异常捕获方式
1.捕获所有异常
try:<代码>
except:print("异常说明")
示例代码:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 异常.py
@Time:2021/04/22 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!"""try:x = 3 / 0 # 程序出现异常,不会继续执行后面的代码print("hello world")
except:print("异常说明:分母不能为0")print("程序正常结束")'''
输出结果:异常说明:分母不能为0
程序正常结束
'''
2.捕获指定异常
try:< 语句 >
except < 异常名 >:print('异常说明')
示例代码:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 异常.py
@Time:2021/04/22 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!"""try:fp = open("123.txt","r") # 程序出现异常,不会继续执行后面的代码print("hello world")fp.close()
except IOError:print("异常说明:文件读取失败")print("程序正常结束")'''
输出结果:异常说明:文件读取失败
程序正常结束
'''
3.捕获多个异常
try:< 语句 >
except < 异常名1 >:print('异常说明1')
except < 异常名2 >:print('异常说明2')
except < 异常名3 >:print('异常说明3')
该种异常处理语法的规则是:
- a.执行 try 下的语句,如果引发异常,则执行过程会跳到第一个 except 语句。
- b.如果第一个 except 中定义的异常名与引发的异常匹配,则执行该 except 中的语句。
- c.如果引发的异常不匹配第一个 except,则会搜索第二个 except,允许编写的 except 数量没有限制。
- d.如果所有的 except 都不匹配,则异常会传递到下一个调用本代码的最高层 try 代码中。
示例代码:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 异常.py
@Time:2021/04/22 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!"""try:fp = open("123.txt","r") # 程序出现异常,不会继续执行后面的代码print("hello world")fp.close()
except GeneratorExit:print("异常说明:GeneratorExit")
except FloatingPointError:print("异常说明:FloatingPointError")
except OverflowError:print("异常说明:OverflowError")
except ZeroDivisionError:print("异常说明:ZeroDivisionError")
except IOError:print("异常说明:IOError")print("程序正常结束")'''
输出结果:异常说明:IOError
程序正常结束
'''
4.万能的异常捕获
try: < 语句 >
except Exception as e: # 自动识别异常信息,并将异常信息保存在e中print('异常说明:',e)
示例代码:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 异常.py
@Time:2021/04/22 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!"""try:fp = open("python.txt","r") # 程序出现异常,不会继续执行后面的代码print("hello world")fp.close()
except Exception as e:print("异常说明:",e)print("程序正常结束")'''
输出结果:异常说明: [Errno 2] No such file or directory: 'python.txt'
程序正常结束
'''
5.异常中的 else
如果判断完没有异常之后还想做其他事,就可以使用下面这样的 else 语句,注意:是在 try 中没有异常情况下,才会执行 else 之后的代码。
try:< 语句 >
except < 异常名1 >:print('异常说明1')
except < 异常名2 >:print('异常说明2')
else:< 语句 > # try语句中没有异常则执行此段代码
示例代码:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 异常.py
@Time:2021/04/22 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!"""try:print("hello world")
except GeneratorExit:print("异常说明:GeneratorExit")
except FloatingPointError:print("异常说明:FloatingPointError")
except OverflowError:print("异常说明:OverflowError")
except ZeroDivisionError:print("异常说明:ZeroDivisionError")
else:print("i love you")print("程序正常结束")'''
输出结果:hello world
i love you
程序正常结束
'''
6.异常中的finally
try…finally…语句无论是否发生异常都将会执行最后的代码。
try:< 语句 >
finally:< 语句 >
示例代码:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 异常.py
@Time:2021/04/22 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!"""try:fp = open("python.txt","r") # 程序出现异常,不会继续执行后面的代码print("hello world")fp.close()
except Exception as e:print("异常说明:",e)
finally:print("finally") # 无论是否发生异常都将会执行最后的代码print("程序正常结束")'''
输出结果:raise Exception!
异常说明: [Errno 2] No such file or directory: 'python.txt'
finally
程序正常结束
'''
7.raise主动触发异常
可以使用 raise 语句自己触发异常,语法如下:
raise [Exception [, args [, traceback]]]
语句中 Exception 是异常的类型(例如,IOError )参数标准异常中任一种,args 是自已提供的异常参数。最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象;示例代码如下:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 异常.py
@Time:2021/04/22 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!"""try:raise Exception("raise Exception!") # 触发异常后,后面的代码就不会再执行print("hello world")
except Exception as e:print(e)
finally:print("OK")'''
输出结果:raise Exception!
OK
'''
在 Python 开发中,为了增加程序的健壮性,异常处理 try…except… 是必须掌握的内容.
三.猜你喜欢
- Python for 循环
- Python 字符串
- Python 列表 list
- Python 元组 tuple
- Python 字典 dict
- Python 条件推导式
- Python 列表推导式
- Python 字典推导式
- Python 函数声明和调用
- Python 不定长参数 *argc/**kargcs
- Python 匿名函数 lambda
- Python return 逻辑判断表达式
- Python 字符串/列表/元组/字典之间的相互转换
- Python 局部变量和全局变量
- Python type 函数和 isinstance 函数区别
- Python is 和 == 区别
- Python 可变数据类型和不可变数据类型
- Python 浅拷贝和深拷贝
未经允许不得转载:猿说编程 » Python 异常处理
Python 异常处理-Python零基础入门教程相关推荐
- python爬虫教程-Python爬虫五大零基础入门教程
这个博主的这个爬虫学习系列教程,很详细啊,从入门到实战.进阶等都有详细的文档介绍,对爬虫感兴趣的小伙伴推荐一看. 实验楼的爬虫教程不是太多,但是都有详细的讲解和代码,而且有在线开发环境,对于学习者是非 ...
- python怎么输出浮点数_python 零基础入门教程第 2 章:基本数据类型 (一)
一.什么是数据类型 编程语言通过一些复杂的计算机物理底层机制,创造不同类型的数据,用来表示现实世界中的不同信息,以便于计算机更好的存储和计算. 每种编程语言都会有一些基本的数据类型用来表示现实世界中的 ...
- 视频教程-Python零基础入门教程-Python
Python零基础入门教程 从2012年从事互联网至今有7年软件编程经验,曾任职国内北京互联网公司,中南林业大学授课Python 现任逻辑教育Python课程负责人,精通Python语言,精通人工智能 ...
- Python零基础入门教程( 快速入门)
前言 学无止境,无止境学. 今天要给大家分享的是<Python零基础入门教程01 快速入门>,这是一个系列的教程,从零基础到项目实战.在本教程中,我会给大家介绍Python入门的一些基础知 ...
- 视频教程-ARDUINO零基础入门教程【代码编程篇】-Arduino
ARDUINO零基础入门教程[代码编程篇] 精通各种单片机编程,有十年以上ARDUINO,51单片机/STM32/PIC/AVR编程,硬件设计,绘图,编程经验.熟悉各种常用传感器使用和物联网通讯 赵勇 ...
- SEO零基础入门教程(外链的发布和软文编写)
seo的作用是众所周知的,对网站进行seo优化,可以给网站带来大量的搜索引擎流量.但是想要做好网站优化也有难度,尤其是对于seo新手来说,因为缺乏理论和实战,所以seo新手需要多加练习.那么具体seo ...
- 九宫怎么排列和使用_剪映零基础入门教程第三十七篇:一学就会系列之九宫格小程序配音...
很多玩儿抖音的朋友都看过九宫格视频,但是并不是每个玩抖音的人都会制作这个九宫格视频,实际这个需要借助小工具来帮忙,而常用抖音的朋友们会对剪映更加熟悉一些,且九宫格视频在剪映内的制作方式则比较简单.那么 ...
- 计算机pscs6教程,photoshop CS6零基础入门教程
<photoshop CS6零基础入门教程>针对零基础学员开设,以教案和实际操作演示相结合的方式,详细地介绍adobe photoshop cs6的各项工具和命令.由浅入深.循序渐进地全面 ...
- finereport自学教程_办公物语丨Finereport零基础入门教程,你不可缺少的报表神器...
原标题:办公物语丨Finereport零基础入门教程,你不可缺少的报表神器 ⌛ 小办又来了,快,搬好你的小板凳. 今天小办要着重讲一下 之前推文里提到过的制表神器. 当你逐渐发现Excel不能满足你的 ...
- ue4怎么用虚幻商城场景_【更新】UE4虚幻引擎野外场景制作零基础入门教程
原标题:[更新]UE4虚幻引擎野外场景制作零基础入门教程 作为一套零基础入门教程,可以帮助虚幻4引擎的新手了解到环境制作流程和相关软件的配合.本教学适合零基础入门用户,不适合有一定经验的UE使用者. ...
最新文章
- 【KVM系列03】KVM的I/O 全虚拟化和准虚拟化
- 【CV】基于聚类的图像分割-Python
- 机器学习实验中的编程技术(part4)--模型持久化
- 用 Identity Server 4 (JWKS 端点和 RS256 算法) 来保护 Python web api
- 【LightOJ - 1030】Discovering Gold(概率dp,数学期望,期望的线性性)
- Python面试题大全(二):python高级语法
- CSDN星城大巡礼,长沙“科技之星”年度企业评选正式开启
- java 错误码设计_关于Java中异常的设计
- java glob paths_何时在JAVA的glob语法中使用**(双星)
- 关于Cocos2d-x中实例伸缩后的位置设置
- Unfolder使用教程:如何插入,删除和更新对象
- android壁纸服务,android壁纸服务流程浅析
- matlab的otdr仿真,otdr测试曲线生成软件-OTDR测试曲线图仿真软件TrcView 4.0 官方免费版 - 河东下载站...
- AD19 绘制PCB操作流程笔记
- U盘插入电脑识别不出来,怎么解决?
- exchange创建邮箱组_在 Exchange 2016 中创建用户邮箱
- java string rt_【Java常用类之String类18】
- 【C/C++练习题】斐波那契数列
- 女人爱与不爱你的表现
- Qt | QTableView的使用方法