什么是异常
? 异常是错误发生的信号
? 程序一旦出错就会产生一个异常
? 如果该异常没有被处理,该异常就会抛出来,程序的运行也随即终止
? 错误分为两种:
? 1、语法错误 #SyntaxError
SyntaxError: invalid syntax
#语法错误举例
if #直接运行
SyntaxError: invalid syntax #运行后报错 语法错误
? 2、逻辑错误
# 逻辑错误举例
age = input(‘>>>:‘).strip()
age = int(age)
if age>19:
print(‘too big‘)
elif age<19:
print(‘too small‘)
else:
print(‘you got it‘)
##ValueError: invalid literal for int() with base 10: ‘sslls‘
为何要处理异常
? 不处理程序就会崩溃
如何处理异常
语法错误-》程序运行前就必须改正确 这类错误不应该犯!!!!!
逻辑错误-》
? 针对可控制的逻辑错误,应该直接在代码层面解决
# 针对可控的应该在代码层解决
age = input(‘>>>:‘).strip()
if age.isdigit():
age = int(age)
if age>19:
print(‘too big‘)
elif age<19:
print(‘too small‘)
else:
print(‘you got it‘)
else:
print(‘必须输入数字‘)
#加入if判断来防止报错导致程序崩溃
? 针对不可控制的逻辑错误应该采用try...except...
try...except... 防止不可控制的逻辑错误应该采用的补救措施
try:
? 被检测的代码块
? 被检测的代码块
? ...
except异常的类型1 as 变量名:
? 针对异常类型1的处理代码 补救代码
except异常的类型2 as 变量名:
? 针对异常类型2的处理代码 补救代码
? ...
except Exception:
? 针对除了以上异常之外所有的异常 的处理代码 补救代码
else:
? 没有发生异常时要执行的代码
finally:
? 无论异常是否,都会执行该代码,通常用来进行回收资源的操作
try:
被检测的代码块
except 异常的类型1 as 变量名:
异常处理的代码 补救
except 异常的类型2 as 变量名:
异常处理的代码 补救
except 异常的类型3 as 变量名:
异常处理的代码 补救
except 异常的类型4,5,6 as 变量名:
异常处理的代码 补救
except Exception:
处理异常的代码 补救
else:
没有发生异常时要执行的代码
finally:
无论异常是否,都会执行该代码,通常用来进行回收资源的操作
?
异常处理
为了保证程序的容错性和可靠性,即在遇到错误时有相应的处理机制不会任由程序崩溃,我们需要对异常进行处理,处理的基本形式为刚刚上面所说的 try...except...
举例
try :
print(‘start....‘)
print(x)
print(‘end...‘)
except NameError as e: #as 语法将异常类型的值赋值给变量e
print(‘异常值为:%s‘ %e)
print(‘run other code...‘)
>>>
start....
异常值为:name ‘x‘ is not defined
run other code...
本来程序一旦出现异常就整体结束掉了,有了遗产给处理以后,在被检测的代码块出现异常时,被检测的代码块中异常发生位置之后的代码将不会执行,取而代之的是执行匹配异常的except子代码块,其余代码均正常运行。
当被检测的代码块中有可能触发不同类型的异常时,针对不同类型的异常:
如果我们想分别用不同的逻辑处理,需要用到多分支的except(类似于多分枝的elif,从上到下依次匹配,匹配成功一次便不再匹配其他)
try 可以和except
也可以和 finally
而else必须有except时候才能有
# 断言
# 测试代码时候用
l = [111,222,333]
if len(l):
raise Exception(‘必须达到三个值‘)
print(‘后续代码?、、‘)
raise
原文:https://www.cnblogs.com/cnblogswilliam/p/14293339.html