一、前言
看下面小程序:
num=eval(input("请输入一个数:"))
print(num**2)
结果:
请输入一个数:2
4
如果我们输入的不是数会发生什么
结果:
请输入一个数:no
Traceback (most recent call last):
File "C:\Users\我的电脑\AppData\Local\Programs\Python\Python35-32\样本.py", line 1, in <module>
num=eval(input("请输入一个数:"))
File "<string>", line 1, in <module>
NameError: name 'no' is not defined
可以看到,Python解释器返回了异常信息,同时推出了程序。
二、异常处理
Python使用try-except语句来实现异常处理,其基本语法格式如下:
try:
<语句块1>
except <异常类型>:
<语句块2>
代码如下:
try:
num=eval(input("请输入一个数:"))
print(num**2)
except NameError:
print("输入错误,请重新输入一个数")
结果:
请输入一个数:no
输入错误,请重新输入一个数
三、try-except的高级用法
(1)高级用法1
语法格式如下:
try:
<语句块1>
except <异常类型1>:
<语句块2>
...
except <异常类型N>:
<语句块N+1>
except:
<语句块N+2>
其中,第一到第N个except语句后面都指定了异常类型,说明这些except所包含的语句块只处理这些类型的异常。最后一个except语句没有指定任何类型,表示它对应的语句块可以处理所有其他异常。
代码如下:
try:
list=["a","b","c","d","e","f"]
num=eval(input("请输入一个整数作为索引:"))
print(list[num])
except NameError:
print("输入错误,请重新输入一个整数")
except:
print("其他错误")
结果:
请输入一个整数作为索引:2
c
请输入一个整数作为索引:no
输入错误,请重新输入一个整数
请输入一个整数作为索引:2.3
其他错误
(2)高级用法2
语法格式:
try:
<语句块1>
except<异常类型1>:
<语句块2>
else:
<语句块3>
finally:
<语句块4>
解释:
1、此处的else语句与for循环和while循环中else一样,当try中的语句块1正常执行结束且没有发生异常时,else中的语句块3执行。
2、finall语句块则不一样,无论try中的语句块1是否发生异常,语句块4都会执行,因此将程序执行语句块1的一些收尾工作放在这里,例如:关闭、打开文件等。
补充:
我总结我所有python笔记于一篇博客里:
点击即可进入Python学习笔记大总结(我把我所有python笔记做了总结和学习顺序,点击即可进入相关博客。希望可以便于你们阅读)