python中用try--except查找出代码错误的使用

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

'''
'''
异常处理
try……except……else
格式:
try:
语句a
except 错误码 as e:
语句1
except 错误码 as e:
语句2
……
except 错误码 as e:
语句n
else:#else语句可有可无
语句x
作用:用来检测try语句块中的错误,从而让except语句捕获错误
信息并处理
逻辑:当程序执行到try--except--else语句时
1、当try“语句a”执行出现错误时,会匹配第一个错误码,如果
匹配上就执行对应“语句”
2、如果当try“语句”执行错误,但是except没有匹配到异常,错误将会
被提交到上一层的try语句。或者到程序的最上层
3、如果当try"语句a"执行没有出现错误,执行else下的“语句x”


'''
'''
try---except方法捕获到错误就不执行后面程序了
a=0

try:
print(3/0)
print(x)
except ZeroDivisionError as e:
print("除数不能为0")
a+=1
except NameError as e:
print("没有该变量")
a += 1
else:
print("代码没问题")
print("出现%d个错误"%(a))#显示a=1 这方法只能报错一个

#使用except而不适用任何的错误类型
a = 0
try:

print(3/0)
print(x)
except:
print("程序出现了异常")
a+=1
#使用except带着多个异常
try:
print(3 / 0)
print(x)
except(ZeroDivisionError,NameError,TypeError):
print("出现了错误")

'''
'''
#特殊
# 1 错误异常是class(类),所有的错误都继承自BaseException,
#所以在捕获的时候,它捕获了类型的错误,还把子类都捕获了
try:
print(3/0)
except BaseException as e:
print("错误")
#错误 被前面捕获了
except ZeroDivisionError as e :
print("除数不能为0")
'''
#2、跨越多层调用,main调用了func2,func2调用了func1,func1出现了错误
#只要main捕获到了错误,就可以处理
def func1(num):
print(1/num)
def func2(num):
func1(num)
def main():
func2(0)
try:
main()
except:
print("****")


try……except……finally:
格式:
try:
语句a
except 错误码 as e:
语句1
except 错误码 as e:
语句2
……
except 错误码 as e:
语句n
finally:
语句x
作用:无论语句a是否有错,都执行finally后的语句x
try:
print(3/0)
except:
print("错误了")
finally:
print("来打我啊")#前面不管如何,都执行这句
posted @ 2019-02-25 11:59  飞飞阿  阅读(2229)  评论(0编辑  收藏  举报