【基础10】【自学笔记】python错误异常处理
一、如何抛出异常?
异常的产生有两种来源:
-
一种是程序自动抛出,比如
1/0会自动抛出 ZeroDivisionError -
一种是开发者主动抛出,使用
raise关键字抛出。
示例:
def demo_func(filename):
if not os.path.isfile(filename):
raise Exception
二.常见异常总结
1.SynataxError:语法错误
解决方法: ①查看代码有没有红色波浪线 ②熟悉python基本语法
2.NameError:试图访问的变量名不存在
解决方法: ①检查对应的变量名是否有定义并赋值,是否写错了变量名称
3.IndexError:索引错误,使用的所以你不存在,常为索引超出序列范围
解决方法: ①检查lis对象索引选择是否超出了本来的长度
4.KeyError:使用了映射中不存在的关键字(键)时引发的关键字错误
解决方法: ①检查字典里是否存在这个key值
5.TypeError:类型错误,内建操作或是函数应于在错误类型的对象时会引发类型错误
解决方法: ①检查清楚数据类型是否有误
6.ValueError:值错误,传给对象的参数类型不正确,例如给int()函数传入了字符串数据类型
解决方法: ①弄清楚形参的数据类型 ②再传对应形参的数据类型
7.AttributeError:属性错误,特性引用和赋值失败时会引发属性错误
解决方法: ①检查类里是否存在这个被调用的方法 ②一般不能自动匹配出方法的多半有问题
8.IOError:输入输出错误
解决方法: ①找到代码中关于输入输出的相关操作 ②检查文件路径和名称对不对
异常不局限于以上八中,这只是很常见的八种异常
三、抛出异常的几种方式?
1.try...except组合语法
(1)代码:
try:
正常的操作
except:
发生异常,执行这块代码
try:
f=open("d:\\test.txt","r")
f.read()
print("文件读写错误")
except IOError:
print("IO读写出错")
2.try...except...else组合语法
(1)代码:
try:
正常的操作
except:
发生异常,执行这块代码
else:
如果没有异常,执行这块代码
try:
f=open("d:\\test.txt","r")
f.read()
print("文件读写错误")
except IOError:
print("IO读写出错")
else:
print("文件写入成功")
3.try...except...except(多个异常处理)
(1)代码:
try:
正常的操作
except A:
发生异常A,执行这块代码
except B:
发生异常B,执行这块代码
except:
发生其它异常,执行这块代码
else:
如果没有异常,执行这块代码
try:
f=open("d:\\test.txt","r")
f.read()
print("文件读写错误")
except IOError:
print("IO读写出错")
except:
print("其他未知异常")
else:
print("文件写入成功")
4.try...except(A,B)(一次捕获多个异常)
(1)代码:
try:
正常的操作
except(A,B):
发生异常A和B,执行这块代码
try:
f=open("d:\\test.txt","r")
f.read()
print("文件读写错误")
except (IOError,TypeError):
print("读取文件时出现异常")
else:
print("文件写入成功")
5、try...except...finally组合语法
(1)代码:
try:
代码A
except [exception] as e:
代码B
finally:
代码C
>>> try:
... 1/0
... except ZeroDivisionError as e:
... print("发生了异常:错误信息如下: \n" + str(e))
... finally:
... print("程序运行结束!!")
...
发生了异常:错误信息如下:
integer division or modulo by zero
程序运行结束!!
万能异常处理:-所有的异常都继承Exception
try:
f=open("d:\\test.txt","r")
f.read()
print("文件读写错误")
except Exception as e:
print("读取文件时出现异常")
print("e的内容"+str(e))
else:
print("文件写入成功")