可迭代对象/迭代器对象看完不迷糊回家不迷路!看完这篇for循环异常捕获也能get了!!!
有字符串、列表、元组、字典、集合、文件对象
# 列表举例
l = [1,2,3,4]
# 转换成迭代器对象
res = l.__iter__()
print(res.__next__())
print(res.__next__())
print(res.__next__())
print(res.__next__())
'''等于遍历了4次列表'''
# 如果再遍历一次就会出错
print(res.__next__())
#出错:StopIteration
# 区分开
l = [1,2,3,4]
# 这样用于取得就是第一个元素
print(l.__iter__().__next__())
print(l.__iter__().__next__())
print(l.__iter__().__next__())
print(l.__iter__().__next__())
print(l.__iter__().__next__())
print(l.__iter__().__next__())
# 演示for循环的底层原理
'''从可以遍历>>>>>遍历结束不报错'''
l1 = [1,2,3,4,5,6,7,8,9,11,22,33,44,55]
# 要求:循环打印出列表中每个元素 但是不能使用for循环 __next__()
# 转换成迭代器对象
res = l1.__iter__()
# 没有自动捕获该错误并处理版本
# while True:
# print(res.__next__())
# 升级,可以正常退出
n = 0
while n<len(l1):
print(res.__next__())
n+=1
# 可以捕获异常,并处理
while True:
try:
print(res.__next__())
except Exception:
print('for循环结束')
break
由上面可知,异常处理的重要性,推出下面的异常处理初始!
调试Python程序时,经常会报出一些异常,异常的原因一方面可能是写程序时由于疏忽或者考虑不全造成了错误,这时就需要根据异常Traceback到出错点,进行分析改正;另一方面,有些异常是不可避免的,但我们可以对异常进行捕获处理,防止程序终止。
异常的组成:
异常错误的分类:
语法错误
不被允许的 出现了应该立刻修改!!!
实例如下:
if 1>2
for i in rage(10)
'''类似这种没有加冒号,缺胳膊断腿的操作属于语法错误'''
SyntaxError: invalid syntax
逻辑错误
可以被允许的 出现了之后尽快修改即可
修改逻辑错误的过程其实就是在从头到尾理清思路的过程
逻辑错误包括了名字错误,值错误等······
详细错误类型点这了解👉[错误类型说明书](内置例外 - Python 3.10.0 文档)
结构:
try:
有可能出错的代码体
except 错误类型 as e:
出错后的应急机制
except 错误类型 as e:
出错后的应急机制
注:可以嵌套多层,e是错误详细信息
try:
int('abc')
except NameError as e:
print('变量名name不存在',e)
except ValueError as e:
print('不是纯数字',e)
#结果
不是纯数字 invalid literal for int() with base 10: 'abc'
万能异常模板
try:
可能出错的代码
except Exception:
捕获错误后输出的内容
实例如下:
# 现在在看for循环捕获异常的代码
l1 = [1,2,3,4,5,6,7,8,9,11,22,33,44,55]
res = l1.__iter__()
while True:
try:
print(res.__next__())
except Exception:
print('for循环结束,自动结束,不然会报错')
break
异常捕获句式和万能异常
1.有可能会出现错误的代码才需要被监测
2.被监测的代码一定要越少越好
3.异常捕获使用频率越低越好
!!!!!祝各位在找bug的路上越走越远!!!!!
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.cnblogs.com/48xz/p/15579567.html
内容来源于网络,如有侵权,请联系作者删除!