day14(异常处理)

1.异常常见错误类型

# 异常俗称bug
# 有些问题只能在服务端解决,因为是客户端的问题导致服务端出行异常,无法解决客户端问题

# 以下是异常的常见错误类型
# SyntaxError  
# NameError
# IndexError
# KeyError
# IndentationError

2.异常处理的语法结构

1.基本语法结构

try:
    待监测的代码(可能会出错的代码)
except 错误类型:
    针对上述错误类型制定的方案

2.查看错误的信息

try:
    待监测的代码(可能会出错的代码)
except 错误类型 as e:  # e就是系统提示的错误信息
    针对上述错误类型制定的方案

3.针对不同的错误类型制定不同的解决方案

try:
	待监测的代码(可能会出错的代码)
except 错误类型1 as e:  # e就是系统提示的错误信息
	针对上述错误类型1制定的方案
except 错误类型2 as e:  # e就是系统提示的错误信息
	针对上述错误类型2制定的方案
except 错误类型3 as e:  # e就是系统提示的错误信息
	针对上述错误类型3制定的方案

4.万能异常 Exception/BaseException

try:
    待监测的代码(可能会出错的代码)
except Exception as e:  # e就是系统提示的错误信息
    针对各种常见的错误类型全部统一处理

5.结合else使用

try:
    待监测的代码(可能会出错的代码)
except Exception as e:  # e就是系统提示的错误信息
    针对各种常见的错误类型全部统一处理
else:
    try的子代码正常运行结束没有任何的报错后 再执行else子代码

6.结合finally使用

try:
    待监测的代码(可能会出错的代码)
except Exception as e:  # e就是系统提示的错误信息
    针对各种常见的错误类型全部统一处理
else:
    try的子代码正常运行结束没有任何的报错后 再执行else子代码
finally:
    无论try的子代码是否报错 最后都要执行finally子代码

3.异常处理关键字补充

1.断言(对未来进行判断)

name = 'jason'
# assert isinstance(name, int)
assert isinstance(name, str)
print('哈哈哈 我就说吧 肯定是字符串')
name.strip()

2.主动抛异常

name = 'jason'
if name == 'jason':
    raise Exception('老子不干了')
else:
    print('正常走')

4.异常处理实战应用

1.异常处理能尽量少用就少用
2.被try监测的代码能尽量少就尽量少
3.当代码中可能会出现一些无法控制的情况报错才应该考虑使用
	eg: 使用手机访问网络软件 断网
      编写网络爬虫程序请求数据 断网

课堂练习

# 使用while循环+异常处理+迭代器对象 完成for循环迭代取值的功能
l1 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
# 1.先将列表调用__iter__转变成迭代器对象
iter_l1 = l1.__iter__()
# 2.while循环让迭代器对象反复执行__next__
while True:
    try:
        print(iter_l1.__next__())
    except StopIteration as e:
        break
posted @ 2023-12-18 17:56  王苗鲁  阅读(4)  评论(0编辑  收藏  举报