一、若程序中有错误,整个程序将会终止。故用try...excep...捕获异常,不会中断程序
二、作用:
1、尽量让程序正常运行;2、尽早发现问题
三、执行顺序:
1、先执行try子句,当try中的语句正常执行,不会有捕获。except里的语句也不执行。
2、若try中的语句异常,则捕获,剩余下的try子句不再执行,except里的语句执行,except后的语句也执行
try:
print('111111')
a = float(input('请输入:'))
print('222222')
except:
print('333333')
print('444444')
若没有异常,222222仍会执行,333333不会执行(111111、444444不受影响)执行结果如下
若有异常,222222不会执行,333333会执行(111111、444444不受影响)执行结果如下:
四、常见的异常类型:
1、NameError:变量没定义
2、ValueError:值转换异常,值错误,如:str->float
3、IndexError:索引越界
4、KeyError:键值不存在
5、SyntaxError:语法错误
6、TypeError:类型错误
7、ZeroDivisionError:0不能做除数
注:Exception 万能警察,可捕获所有类型,except后面不写,默认是万能警察,但一般不用
五、格式:
1、try...except...
try:
可能会出现异常的代码
except 异常类型:
出现异常时,你会执行的操作
try:
1/0
except ZeroDivisionError as e:
print('0不能做除数!',e)
执行结果如下:
一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。一个except子句可以同时处理多个异常,用逗号隔开(元组形式)
最后一个except子句可以忽略异常的名称(可不写异常类型),它将被当作通配符使用。可以使用这种方法打印一个错误信息,然后再次把异常抛出。
2、try...except...else...
try:
可能会出现异常的代码
except 异常类型:
出现异常时,你会执行的操作
else:
没有异常时执行的操作
3、try...except...else...finall...(finall表示不管有没有异常都执行的代码)
try:
可能会出现异常的代码
except 异常类型:
出现异常时,你会执行的操作
else:
没有异常时执行的操作
finall:
不管有没有异常都会执行的操作
六、抛出异常raise:
格式:raise 异常类型(异常类型提示信息)
raise主动抛出异常,后面的语句不再执行,终止函数运行,return返回也终止。
def add():
a = input('请输入一个数值:')
if isinstance(a,str):
raise ValueError('不能输入非数字!')
a += 1
return a
print(add())
执行结果如下: