首页 后端 Python 正文

Python异常处理机制

Python程序一般对输入有一定要求,但当实际输入不满足程序要求时,可能会产生程序的运行错误。

一、Bub的由来及分类

1.Bug的由来

世界上第一部万用计算机的进化版-马克2号(Mark II)

1945年9月9日,下午三点。哈珀中尉正领着她的小组构造一个称为“马克二型”的计算机。这还不是一个完全的电子计算机,它使用了大量的继电器,一种电子机械装置。第二次世界大战还没有结束。哈珀的小组日以继夜地工作。机房是一间第一次世界大战时建造的老建筑。那是一个炎热的夏天,房间没有空调,所有窗户都敞开散热。

突然,马克二型死机了。技术人员试了很多办法,最后定位到第70号继电器出错。哈珀观察这个出错的继电器,发现一只飞蛾躺在中间,已经被继电器打死。她小心地用摄子将蛾子夹出来,用透明胶布帖到“事件记录本”中,并注明“第一个发现虫子的实例。”

从此以后,人们将计算机错误戏称为虫子(bug),而把找寻错误的工作称为(debug)。

Python异常处理机制  第1张

2.Bug常见类型

2.1粗心导致的错误

1.漏了末尾的冒号: if 循环语句、 else 语句等 2.缩进错误 3.英文符号写为中文符号 4.把字符串str和数字凭借在一起 5.while循环没有定义变量 6.比较运算符 == 和赋值运算符 = 混用

age = int(input('请输入年龄:'))  # input函数返回值为str类型
if age > 18:
    print('成年了')

2.2知识不熟悉导致的错误

1.index索引越界 2.列表方法lst.append

# 索引越界
lst = [1, 2, 3, 4]
# print(lst[4])
print(lst[3])  # 4


# append()方法使用不熟练
lst = []
# lst = append(1, 2, 3)
lst.append(1)  # 每次只能添加一个元素

2.3思路不清晰导致的错误

# -*- coding: utf-8 -*-
# @File  : demo.py
# @author: Flyme awei
# @email : Flymeawei@163.com
# @Time  : 2022/8/15 10:22

# 思路不清晰导致的问题 基础知识不牢固,练练练!!!
lst = [{'rating': [9.7, 2062397], 'id': '1292052', 'type': ['犯罪', '剧情'], 'title': '肖申克的救赎', 'actors': ['蒂姆·罗宾斯', '摩根·弗里曼']},
       {'rating': [9.6, 1528760], 'id': '1291546', 'type': ['剧情', '爱情', '同性'], 'title': '霸王别姬', 'actors': ['张国荣', '张丰毅', '巩俐', '葛优']},
       {'rating': [9.5, 1559181], 'id': '1292720', 'type': ['剧情', '爱情'], 'title': '阿甘正传', 'actors': ['汤姆·汉克斯', '罗宾·怀特 ']}
       ]

name = input('请输入你要查询的演员:')
for item in lst:  # 遍历列表lst  -->{}  item是一个又一个的字典
    act_lst = item['actors']  # 通过item字典中的键actors获取值演员列表
    for actor in act_lst:  # 遍历演员列表
        if name in actor:
            print(name, '出演了', item['title'])

Python异常处理机制  第2张

2.4被动掉坑引起的错误

除零异常

# -*- coding: utf-8 -*-
# @File  : demo.py
# @author: Flyme awei 
# @email : Flymeawei@163.com
# @Time  : 2022/8/15 10:22

a = int(input('请输入第一个整数:'))
b = int(input('情书如第二个整数:'))
result = a/b  # 注意:0不可以做除数
print('输出结果为:', result)

Python异常处理机制  第3张 解决办法

# -*- coding: utf-8 -*-
# @File  : demo.py
# @author: Flyme awei 
# @email : Flymeawei@163.com
# @Time  : 2022/8/15 10:22

try:
    a = int(input('请输入第一个整数:'))
    b = int(input('请输如第二个整数:'))
    result = a / b  # 注意:0不可以做除数
    print("{}除{}等于{}".format(a, b, result))
except ZeroDivisionError as error:
    print(error)

Python异常处理机制  第4张

二、异常处理

Python提供了异常处理机制,可以在异常出现时即时捕获,然后内部“消化”,让程序继续运行

1.try-exception语句

try:
    ...  可能会出异常的代码
    ...
    ...
except xxx(异常类型):
    ...  异常处理代码
    ...
    ...

# -*- coding: utf-8 -*-
# @File  : demo.py
# @author: Flyme awei 
# @email : Flymeawei@163.com
# @Time  : 2022/8/15 10:22

try:
    a = int(input('请输入第一个整数:'))
    b = int(input('请输如第二个整数:'))
    result = a / b  # 注意:0不可以做除数
    print('输出结果为:', result)
except ZeroDivisionError:
    print('对不起,除数不能为0')
print('程序结束')

Python异常处理机制  第5张 Python异常处理机制  第6张

2.多个except语句

try:
    ...  可能会出异常的代码
    ...
    ...
except Exception1:
    ...  异常处理代码
    ...
    ...
except Exception2:
    ...  异常处理代码
    ...
    ...
except BaseException:
    ...  异常处理代码
    ...
    ...

# -*- coding: utf-8 -*-
# @File  : demo.py
# @author: Flyme awei 
# @email : Flymeawei@163.com
# @Time  : 2022/8/15 10:22

try:
    a = int(input('请输入第一个整数:'))
    b = int(input('请输如第二个整数:'))
    result = a / b  # 注意:0不可以做除数
    print('输出结果为:', result)
except ZeroDivisionError:
    print('对不起,除数不能为0')
except ValueError:
    print('对不起,只能输入数字串')
print('程序结束')

正常输出:

Python异常处理机制  第7张

除零异常:ZeroDivisionError

Python异常处理机制  第8张

值错误:ValueError

Python异常处理机制  第9张

3.try-except-else结构

如果 try中没有抛出异常,则执行else块;如果try中抛异常,则执行except块,else块不执行。

# -*- coding: utf-8 -*-
# @File  : demo.py
# @author: Flyme awei 
# @email : Flymeawei@163.com
# @Time  : 2022/8/15 10:22

如果 try中没有抛出异常,则执行else块,如果try中抛异常,则执行except块

try: a = int(input('请输入第一个整数:')) b = int(input('情书如第二个整数:')) result = a / b  # 注意:0不可以做除数 except BaseException as e: print('出错了', e) else: print('计算结果为', result)

![在这里插入图片描述](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/619e835728ad474090a5388b21b57c97~tplv-k3u1fbpfcp-zoom-1.image)
### 4.`try-except-else-finally`结构
>`finally` 无论是否发生异常都会被执行,常用来解释`try`块中申请的资源
```python
# -*- coding: utf-8 -*-
# @File  : demo.py
# @author: Flyme awei 
# @email : Flymeawei@163.com
# @Time  : 2022/8/15 10:22

'''
try except else finally 结构
finally 无论是否发生异常都会被执行,能常用来解释try块中申请的资源
'''

try:
    a = int(input('请输入第一个整数:'))
    b = int(input('请输入第二个整数:'))
    result = a / b
except BaseException as e:
    print('出错了', e)
else:
    print('结果为:', result)
finally:
    print('谢谢你的使用')
print('程序结束')

Python异常处理机制  第10张

5.traceback模块

使用traceback模块打印异常信息

# 索引越界
lst = [1, 2, 3, 4]
# print(lst[4])
print(lst[3])  # 4


# append()方法使用不熟练
lst = []
# lst = append(1, 2, 3)
lst.append(1)  # 每次只能添加一个元素1

Python异常处理机制  第11张

三、Python常见异常类型

异常描述
ZeroDivisionError除零异常
IndexError列表中没有次索引(index)  注:索引从零开始
KeyError映射中没有这个键  dic['key']
NaneError未声明/初始化对象 (没有属性)
SyntaxErrorPython语法错误
ValueError传入无效参数

四、PyCharm程序调试

先看一段代码:

# 索引越界
lst = [1, 2, 3, 4]
# print(lst[4])
print(lst[3])  # 4


# append()方法使用不熟练
lst = []
# lst = append(1, 2, 3)
lst.append(1)  # 每次只能添加一个元素2

Python异常处理机制  第12张

1.断点

程序运行到此处,暂时挂起,停止执行。此时可以详细观察程序的运行情况,方便做出进一步的判断。

Python异常处理机制  第13张

2.调试

进入调试视图的三种方式:

(1)单击工具栏上的按钮 Python异常处理机制  第14张

(2)右键单击编辑区:点击:debug’模块名’ Python异常处理机制  第15张

(3)快捷键:shift+F9

五、总结

Python常见异常类型 | 异常 | 描述 | |--|--| | ZeroDivisionError  |  除零异常 | | IndexError  |   列表中没有次索引(index)  注:索引从零开始 | |   KeyError     |  映射中没有这个键  dic['key']  | | NaneError    | 未声明/初始化对象 (没有属性)  | |  SyntaxError |  Python语法错误  | |  ValueError  | 传入无效参数  |

打赏
海报

本文转载自互联网,旨在分享有价值的内容,文章如有侵权请联系删除,部分文章如未署名作者来源请联系我们及时备注,感谢您的支持。

转载请注明本文地址:https://www.shouxicto.com/article/6247.html

相关推荐

python怎么下载?

python怎么下载?

Python程序一般对输入有一定要求,但当实际输入不满足程序要求时,可能会产生程序的运行错误。...

Python 2022.08.26 0 893

初学者如何学习Python?

初学者如何学习Python?

Python程序一般对输入有一定要求,但当实际输入不满足程序要求时,可能会产生程序的运行错误。...

Python 2022.08.25 0 765

用 PaddleOCR 识别表情包文字

最近在做个表情包的小程序,涉及到表情包搜索功能。我们上传表情包的时候,只有一张图,怎么搜索?这个时候我们想到就是将表情包的文字提取出来,作为搜索的内容。那么这就需要用到 ocr 技术了。经过几个 oc...

Python 2022.08.20 0 819

Python异常处理机制

Python异常处理机制

Python程序一般对输入有一定要求,但当实际输入不满足程序要求时,可能会产生程序的运行错误。...

Python 2022.08.16 0 752

发布评论

ainiaobaibaibaibaobaobeishangbishibizuichiguachijingchongjingdahaqiandaliandangaodw_dogedw_erhadw_miaodw_tuzidw_xiongmaodw_zhutouganbeigeiliguiguolaiguzhanghahahahashoushihaixiuhanheixianhenghorse2huaixiaohuatonghuaxinhufenjiayoujiyankeaikeliankouzhaokukuloukunkuxiaolandelinileimuliwulxhainiolxhlikelxhqiuguanzhulxhtouxiaolxhwahahalxhzanningwennonuokpinganqianqiaoqinqinquantouruoshayanshengbingshiwangshuaishuijiaosikaostar0star2star3taikaixintanshoutianpingtouxiaotuwabiweifengweiquweiwuweixiaowenhaowoshouwuxiangjixianhuaxiaoerbuyuxiaokuxiaoxinxinxinxinsuixixixuyeyinxianyinyueyouhenghengyuebingyueliangyunzanzhajizhongguozanzhoumazhuakuangzuohenghengzuoyi
支付宝
微信
赞助本站