Python教程 - 错误处理(try、except)
off999 2024-11-20 20:03 38 浏览 0 评论
在执行Python程序时,我们可能会遇到“非预期错误”的情况。如果没有妥善处理这些错误,可能会导致整个程序崩溃并停止运行。因此,通过“异常处理”机制,我们可以在发生错误时采取相应的行动。这不仅能够保护整个程序的流程,还能够定位问题出现的位置,从而快速进行修正。
使用try和except
下面的例子在执行后,会发生TypeError错误(因为输入的是文字,文字无法与数字相加),由于错误发生,导致程序停止,后续程序无法正常执行。
a = input('输入数字:')
print(a + 1) # 发生错误
print('hello') # 因为发生错误,导致程序停止,所以后续程序无法执行
为了避免程序因错误而停止,我们可以使用try和except进行保护(或测试)。当try区域内的程序发生错误时,就会执行except里的内容。如果try的程序没有错误,就不会执行except的内容。当程序修改成下面的样子,就会顺利打印出后面的hello。
try: # 使用 try,测试内容是否正确
a = input('输入数字:')
print(a + 1)
except: # 如果 try 的内容发生错误,就执行 except 里的内容
print('发生错误')
print('hello')
加入pass略过
在编写try...except时,有时会遇到“不想做任何动作”的情况(连print都不想使用)。这时可以使用pass语句来略过(什么也不做)。以下述程序为例,当发生错误时,进入except后就会自动忽略并跳过。
try: # 使用 try,测试内容是否正确
a = input('输入数字:')
print(a + 1)
except: # 如果 try 的内容发生错误,就执行 except 里的内容
pass # 略过
print('hello')
except的错误信息
只要程序发生错误,控制台中都会出现对应的错误信息。下面列出常见的几种错误信息:
- NameError:使用未定义的对象
- IndexError:索引值超出了序列的大小
- TypeError:数据类型错误
- SyntaxError:Python语法规则错误
- ValueError:传入值错误
- KeyboardInterrupt:程序被手动强制终止
- AssertionError:程序断言后面的条件不成立
- KeyError:键发生错误
- ZeroDivisionError:除以0
- AttributeError:使用不存在的属性
- IndentationError:Python语法错误(没有对齐)
- IOError:输入/输出异常
- UnboundLocalError:局部变量和全局变量发生重复或错误
下面的程序执行时,因为变量a还未被定义,所以会进入except NameError的区域,打印出“使用未定义的对象”。
try:
print(a)
except TypeError:
print('类型发生错误')
except NameError:
print('使用未定义的对象')
print('hello')
# 使用未定义的对象
# hello
如果不知道错误的类型,只想打印出错误信息,除了单纯用except,也可以使用except Exception,将所有的异常信息都包含在内。
try:
print(1/0)
except TypeError:
print('类型发生错误')
except NameError:
print('使用未定义的对象')
except Exception:
print('不知道怎么回事,反正发生错误了')
print('hello')
# 不知道怎么回事,反正发生错误了
# hello
如果不知道错误的类型,只想打印出错误信息,除了单纯用except,也可以使用except Exception,将所有的异常信息都包含在内。
try:
a = 1
b = '1'
print(a+b)
except Exception as e:
print(e)
# unsupported operand type(s) for +: 'int' and 'str'
raise 和 assert
在执行try的过程中,如果遇到需要“强制中断”的情况,可以使用raise强制中断。
try:
a = int(input('输入 0~9:'))
if a>9: # 如果输入的 a 大于 9
raise # 强制中断,拋出错误信息
print(a)
except :
print('有错误喔~') # 收到错误信息,显示错误
raise后面可以加上错误信息,错误信息可以包含要显示的消息。例如,下面的示例强制停止时报告ValueError信息,接着使用except隔离错误信息,就能展示真实的错误状况。
try:
a = int(input('输入 0~9:'))
if a > 10:
raise ValueError('数字不在范围内')
print(a)
except ValueError as msg: # 如果输入范围外的数字或解析非10进制数字,执行这里的程序
print(msg)
except: # 其他错误,执行这里的程序
print('有错误哦~')
print('继续执行')
使用assert中断的方法为assert False, '错误信息',用法和raise类似,执行后就会中断程序,并将错误信息提供给except显示。下面的程序如果输入123,会执行AssertionError里的程序,如果输入abc则会执行except里的程序。
try:
a = int(input('输入 0~9:'))
if a > 10:
assert False, '数字不在范围内'
print(a)
except AssertionError as msg:
print(msg)
except:
print('有错误哦~')
print('继续执行')
加入 else 和 finally
在except结束后,可以加入else或finally两个额外的判断,else表示完全没有错误,就会执行该区域的程序,finally则不论程序对错,都会执行该区域的程序。
try:
a = int(input('输入 0~9:'))
if a > 10:
raise
print(a)
except:
print('有错误哦~')
else: # 完全没有错才会执行这行
print('没有错!继续执行!')
finally: # 不论有没有错都会执行这行
print('管他有没有错,继续执行!')
相关推荐
- 安全教育登录入口平台(安全教育登录入口平台官网)
-
122交通安全教育怎么登录:122交通网的注册方法是首先登录网址http://www.122.cn/,接着打开网页后,点击右上角的“个人登录”;其次进入邮箱注册,然后进入到注册页面,输入相关信息即可完...
- 大鱼吃小鱼经典版(大鱼吃小鱼经典版(经典版)官方版)
-
大鱼吃小鱼小鱼吃虾是于谦跟郭麒麟的《我的棒儿呢?》郭德纲说于思洋郭麒麟作诗的相声,最后郭麒麟做了一首,师傅躺在师母身上大鱼吃小鱼小鱼吃虾虾吃水水落石出师傅压师娘师娘压床床压地地动山摇。...
-
- 哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)
-
要想将ppt免费转换为pdf的话,我们建议大家可以下一个那个wps,如果你是会员的话,可以注册为会员,这样的话,在wps里面的话,就可以免费将ppt呢转换为pdfpdf之后呢,我们就可以直接使用,不需要去直接不需要去另外保存,为什么格式转...
-
2026-02-04 09:03 off999
- 电信宽带测速官网入口(电信宽带测速官网入口app)
-
这个网站看看http://www.swok.cn/pcindex.jsp1.登录中国电信网上营业厅,宽带光纤,贴心服务,宽带测速2.下载第三方软件,如360等。进行在线测速进行宽带测速时,尽...
- 植物大战僵尸95版手机下载(植物大战僵尸95 版下载)
-
1可以在应用商店或者游戏平台上下载植物大战僵尸95版手机游戏。2下载教程:打开应用商店或者游戏平台,搜索“植物大战僵尸95版”,找到游戏后点击下载按钮,等待下载完成即可安装并开始游戏。3注意:确...
- 免费下载ppt成品的网站(ppt成品免费下载的网站有哪些)
-
1、Chuangkit(chuangkit.com)直达地址:chuangkit.com2、Woodo幻灯片(woodo.cn)直达链接:woodo.cn3、OfficePlus(officeplu...
- 2025世界杯赛程表(2025世界杯在哪个国家)
-
2022年卡塔尔世界杯赛程公布,全部比赛在卡塔尔境内8座球场举行,2022年,决赛阶段球队全部确定。揭幕战于当地时间11月20日19时进行,由东道主卡塔尔对阵厄瓜多尔,决赛于当地时间12月18日...
- 下载搜狐视频电视剧(搜狐电视剧下载安装)
-
搜狐视频APP下载好的视频想要导出到手机相册里方法如下1、打开手机搜狐视频软件,进入搜狐视频后我们点击右上角的“查找”,找到自已喜欢的视频。2、在“浏览器页面搜索”窗口中,输入要下载的视频的名称,然后...
- 永久免费听歌网站(丫丫音乐网)
-
可以到《我爱音乐网》《好听音乐网》《一听音乐网》《YYMP3音乐网》还可以到《九天音乐网》永久免费听歌软件有酷狗音乐和天猫精灵,以前要跳舞经常要下载舞曲,我从QQ上找不到舞曲下载就从酷狗音乐上找,大多...
- 音乐格式转换mp3软件(音乐格式转换器免费版)
-
有两种方法:方法一在手机上操作:1、进入手机中的文件管理。2、在其中选择“音乐”,将显示出手机中的全部音乐。3、点击“全选”,选中所有音乐文件。4、点击屏幕右下方的省略号图标,在弹出菜单中选择“...
- 电子书txt下载(免费的最全的小说阅读器)
-
1.Z-library里面收录了近千万本电子书籍,需求量大。2.苦瓜书盘没有广告,不需要账号注册,使用起来非常简单,直接搜索预览下载即可。3.鸠摩搜书整体风格简洁清晰,书籍资源丰富。4.亚马逊图书书籍...
- 最好免费观看高清电影(播放免费的最好看的电影)
-
在目前的网上选择中,IMDb(互联网电影数据库)被认为是最全的电影网站之一。这个网站提供了各种类型的电影和电视节目的海量信息,包括剧情介绍、演员表、评价、评论等。其还提供了有关电影制作背后的详细信息,...
- 孤单枪手2简体中文版(孤单枪手2简体中文版官方下载)
-
要将《孤胆枪手2》游戏的征兵秘籍切换为中文,您可以按照以下步骤进行操作:首先,打开游戏设置选项,通常可以在游戏主菜单或游戏内部找到。然后,寻找语言选项或界面选项,点击进入。在语言选项中,选择中文作为游...
欢迎 你 发表评论:
- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
