异常处理

一.异常捕获/处理

1.异常
	异常就是代码运行报错 行业俗语叫bug
	代码运行中一旦遇到异常会直接结束整个程序的运行 我们在编写代码的过程中药尽可能避免
2.异常分类
	语法错误
    	不允许出现 一旦出现立刻改正 否则提桶跑路
	逻辑错误
    	允许出现的 因为它一眼发现不了 代码运行之后才可能会出现
3.异常结构
	错误位置
	错误类型
	错误详情

一.异常常见类型

AssertionError    断言语句失败(assert 后的条件为假)
AttributeError    访问的对象属性不存在
ImportError    无法导入模块或者对象,主要是路径有误或名称错误    
IndentationError 代码没有正确对齐,主要是缩进错误
IndexError    下标索引超出序列范围
IOError        输入/输出异常,主要是无法打开文件
KeyError    访问字典里不存在的键
NameError     访问一个未声明的变量
OverflowError    数值运算超出最大限制
SyntaxError    python语法错误
TabError    Tab和空格混用
TypeError    不同类型数据之间的无效操作(传入对象类型与要求的不符合)
ValueError    传入无效的值,即使值的类型是正确的
ZeroDivisionError    除法运算中除数0 或者 取模运算中模数为0
--------------------------------------------------------------------------------
一旦程序发生异常,表明该程序在执行时出现了非正常的情况,无法再执行下去。默认情况下,程序会终止退出。

二.异常处理语法结构

1.基本语法结构

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

2.查看错误信息

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

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

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

4.万能异常 Exception/BaseException

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

5.结合else使用

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

6.结合finally使用

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

三.异常处理补充

1.断言

name = 'jason'
# assert isinstance(name, int)
assert isinstance(name, str)
print('我是字符串')
name.strip()

2.主动抛异常

name = 'jason'
if name == 'jason':
	raise Exception('老子不干了')
else:
	print('继续干吧·')

四.异常处理实战应用

1.异常处理能尽量少用就少用

2.被try监测的代码能尽量少就尽量少

3.当代码中可能会出现一些无法控制的情况报错才应该考虑使用

eg:使用手机访问网络软件 断网

		编写网络爬虫程序请求数据 断网
posted @ 2022-10-17 18:44  dear丹  阅读(62)  评论(0编辑  收藏  举报