一、异常处理
1、异常的概念
异常是错误发生的信号,一旦程序出错,并且程序没有处理这个错误,那个就会抛出异常,并且程序的运行随即终止。
2、错误种类
分两种,第一种是:语法错误,这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正。
第二种是:逻辑错误,在功能实现上
3、逻辑错误的异常处理
3.1、异常处理的意义:保证程序的健壮性与容错性,即在遇到错误时程序不会崩溃。
3.2 、这里又可以分为两种情况
<1>如果错误发生的条件是可预知的,我们需要用if进行处理:在错误发生之前进行预防。
AGE=10
while True:
age=input('>>: ').strip()
if age.isdigit(): #只有在age为字符串形式的整数时,下列代码才不会出错,该条件是可预知的
age=int(age)
if age == AGE:
print('you got it')
break
二.异常捕捉,使用try等语句
捕捉异常可以使用try/except语句。
1,try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
如果你不想在异常发生时结束你的程序,只需在try里捕获它。
语法:
以下为简单的try…except…else的语法:
try:
<语句> #运行别的代码
except <名字>:
<语句> #如果在try部份引发了’name’异常
except <名字>,<数据>:
<语句> #如果引发了’name’异常,获得附加的数据
else:
<语句> #如果没有异常发生
2、万能异常
被检测的代码块抛出的异常有多种可能性,并且我们针对所有的处理逻辑只用一种就可以了
s1 = 'hello'
try:
int(s1)
except Exception as e:
print('发生异常',e)
3.多分支
s1 = 'hello'
try:
int(s1)
except IndexError as e: # 将异常信息传给变量e
print(e)
except KeyError as e:
print(e)
except ValueError as e:
print(e)
被检测的代码块抛出的异常有多种可能性,并且我们需要针对每一种异常类型都定制专门的处理逻辑。
5、主动触发异常:raise,异常类型值
class People:
def __init__(self,name,age):
if not isinstance(name,str):
raise TypeError('名字必须为str类型')
if not isinstance(age,int):
raise TypeError('年龄必须为正整数')
self.name = name
self.age = age
p = People('cc',21)
错误类型: