Python异常处理

2019-05-28

Python中的异常处理

需求:
  当程序遇到问题时不让程序结束,而越过错误继续向下执行

try......except.....else
格式:
try: 语句t except 错误表示码 as e: 语句2 ....... except 错误表示码 as e: 语句n else: 语句e

 

注意:
  else语句可有可无
作用:
  用来检测try语句块中的错误,从而让except语句捕获错误信息并处理

逻辑:
  当程序执行到try-except-else语句时
    1、如果当try语句执行出现错误,会匹配第一个错误码,如果匹配上就执行对应的"语句"
    2、如果try语句执行出现错误,没有匹配的异常,错误将会将提交到上一层的try语句。或者到程序的最上层。
    3、如果try语句执行没有出现错误,执行else下的语句else/得存在
  使用execpt而不使用任何的错误类型
  使用execpt带着多种异常

 

try:
  pass
except(NameError,ZreoDivisionError)
  print("出现了NameError或ZreoDivisionError")

 



特殊的一些错误:
  1、错误其实就是class(类),所有的错误都继承自BaseException,所以在捕获的时候,它不回来该类型的错误,还把子类一网打尽。
  2、跨越多层调用,main调用了func2,func2调用了func1,func1出现了错误,这是只要main捕获到了就可以处理。例如以下:

def func1(num):
    print(1/num)
def func2(num):
    func1(num)
def main():
    func2(2)
main()

写代码时内出现错误,怎么检测异常

try.....except.......finally

格式:

try:
语句1
except 错误表示码 as e:
语句2
.......

except 错误表示码 as e:
语句n
finally:
语句f
作用:语句1无论是否有错误都将继续执行最后的语句f

 

断言:

def func(num,div):
assert(div !=0),"div不能为0"
return num/div

print(func(10,0))

 

常见错误:

Name Error 变量没定义
Systax Error 语法错误
IO Error 文件错误
Zero DivisionError 10/0,除零错误
Value Error 值错误,例如a = int(‘aa’)
keyboard Interrupt 强制终止程序产生,ctrl+c强制终止程序运行

 

 

posted @ 2019-05-28 18:21  旧情有余温  阅读(182)  评论(0编辑  收藏  举报