Python异常处理

1、定义

异常指的是程序正常运行时发生时引发的错误。严格来说,语法错误和逻辑错误不属于异常。异常可以理解为程序 时而好使,时而不好使,并不是说这个程序本身就有错误存在执行不了。

2、产生原因

除零、下标越界、文件不存在、网络异常、类型错误、名字错误、字典键错误、磁盘空间不足

3、Python中的异常类

异常描述
NameError尝试访问一个没有申明的变量
ZeroDivisionError除数为零
TypeError不同类型间的无效操作
SyntaxError语法错误
IdexError索引超出序列范围
KeyError请求一个不存在的字典关键字
OSError操作系统错误(如要读文件不存在)
ValueError传给函数的参数类型不正确,比如给int()函数传入字符串型

4、异常处理的结构


#类型一
trytry#被监控的语句
exceptexcept#处理异常的语句
#类型二
trytry#被监控的语句
except Exception[as reason]except#处理异常的语句
#类型三 (捕获多种异常)
try:
	try#被监控的语句
except Exception1:
	except 1	#处理异常类型1的语句
except Exception2:
	except 2	#处理异常类型2的语句
except Exception3:
	except 3	#处理异常类型3的语句
# 类型四(else&finally)
try:
	try#被监控的语句
except FileNotFoundError:
	except 1	#处理异常类型1的语句
except ValueError:
	except 2	#处理异常类型2的语句
else:
	执行语句
finally:
	不论是否异常,都会执行的语句

5、代码示例

1.执行下面一段程序
f = fopen(“不存在的文件.txt”)
print(‘f.read()’)
f.close()
运行结果:运行结果我们可以使用try-catch进行一下包装
try:
f = open(“不存在的文件.txt”)
print(‘f.read()’)
f.close()
except:
print(‘这个文件不存在啊o(╥﹏╥)o’)
运行结果:
运行结果
2.except 后不能覆盖所有错误,依然会报错
try:
int(‘abc’)
f = open(“不存在的文件.txt”)
print(‘f.read()’)
f.close()
except OSError:
print(‘这个文件不存在啊o(╥﹏╥)o’)
运行结果:
在这里插入图片描述上述异常只是指明了操作系统异常,在文件打开异常时可以被处理,但是对于参数类型不正确的错误,程序仍然会异常退出。
改进方法:
try:
int(‘abc’)
f = open(“不存在的文件.txt”)
print(‘f.read()’)
f.close()
except OSError as reason:
print(‘这个文件不存在啊o(╥﹏╥)o\n错误原因是:’+str(reason))
except ValueError as reason:
print(‘类型转换出错啦!\n错误原因是:’+str(reason))
else:
print(‘没错,没错!’)在这里插入图片描述
加上as reason可以得到系统的具体错误原因。

代码的再一次改进:
try:
int(‘abc’)
f = open(“不存在的文件.txt”)
print(‘f.read()’)
f.close()
except OSError as reason:
print(‘这个文件不存在啊o(╥﹏╥)o\n错误原因是:’+str(reason))
except ValueError as reason:
print(‘类型转换出错啦!\n错误原因是:’+str(reason))
except:
print(‘未知错误!’)
else:
print(‘没错,没错!’)
当上述提到的错误均没有被发现时,可以增加一个except相当于C语言switch语句中default的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值