针对异常处理的方法
1,try ...except 单个情况
2,try except except..... 多分支,针对多个你已知的异常,分别导向不同的代码. *
3,try except Exception as e: 万能异常处理. 你对出现的异常错误未知,你要用万能的. *
# 1,只是显示错误信息,不终止程序就行. 万能的
# 2,针对不同的错误,提示不同的信息,进行不同的操作. 多分支,多分支+ 万能
4,try except except except Exception as e: 多分支 + 万能 *
2,try except except..... 多分支,针对多个你已知的异常,分别导向不同的代码. *
3,try except Exception as e: 万能异常处理. 你对出现的异常错误未知,你要用万能的. *
# 1,只是显示错误信息,不终止程序就行. 万能的
# 2,针对不同的错误,提示不同的信息,进行不同的操作. 多分支,多分支+ 万能
4,try except except except Exception as e: 多分支 + 万能 *
5,try except except... else 出现异常就不执行else代码反之则执行.
6,
try except except... else,finally 不常用
try finally * 涉及到关闭文件句柄,网络链接,数据库链接等等.
7, raise
8, 自定义异常处理.
9 assert
'''
6,
try except except... else,finally 不常用
try finally * 涉及到关闭文件句柄,网络链接,数据库链接等等.
7, raise
8, 自定义异常处理.
9 assert
'''
# 什么是异常??
# 由错误引发的,而且出现异常就会终止程序.
# 由错误引发的,而且出现异常就会终止程序.
# 为什么要进行异常处理:
#1, 异常就会终止程序,用户体验极差,
#2, 让你的代码不冗余.
#1, 异常就会终止程序,用户体验极差,
#2, 让你的代码不冗余.
# 异常处理:
# 1,if ,异常处理 他只能处理简单的逻辑.
# 1,if ,异常处理 他只能处理简单的逻辑.
# num = input('>>>') # if num.isdigit(): # num = int(num) # if 1<= num <= 5: # if # # else: # print('有非数字类型....')
.1 单独一个条件.单支.
# try: # num = int(input('>>>')) #ValueError # name # NameError # # if 1 > 0; # SyntaxError # dic = {} # dic['key'] # KeyError # li = [1,2,3] # li[10] # IndexError # import ac # ImportError # except NameError: # print('出现了NameError错误') # print(111) # print(222) # print(333) # print(114441
2多分支
num = int(input('>>>')) #ValueError # # name # NameError # # dic = {} # # dic['key'] # KeyError # # li = [1,2,3] # # li[10] # IndexError # # import ac # ImportError # except NameError: # print('出现了NameError错误') # except ValueError: # print('出现了ValueError错误') # except KeyError: # print('出现了KeyError错误') # # print(222) # print(333) # print(114441) # class A: # def __str__(self): # return 'list index out of range' # a1 = A() # print(a1)
3万能异常处理
try: # # num = int(input('>>>')) #ValueError # # name # NameError # dic = {} # # dic['key'] # KeyError # li = [1,2,3] # li[10] # IndexError # import ac # ImportError # except Exception as e: # # print('您输入的不规范,请重新输入...') # print('稍等片刻,去去就来...') # 异常处理的两种结局方式: # 1,只是显示错误信息,不终止程序就行. 万能的 # 2,针对不同的错误,提示不同的信息,进行不同的操作. 多分支 # def login(): # pass # # def regsiter(): # pass # # def article(): # pass # # def dariy(): # pass # dic = { # 1:login, # 2:regsiter, # 3:article, # 4:dariy, # } # while True: # choice = input('请输入:') # if choice.isdigit(): # choice = int(choice) # if 1 <= choice <=4: # dic[choice]() # # else: # print('请范围内的数字...') # else: # print('请输入数字...') # while True: # try: # choice = int(input('请输入:')) # dic[choice]() # except ValueError: # print('请输入数字...') # except KeyError: # print('请范围内的数字...')
4 多分支 万能
while True: # try: # choice = int(input('请输入:')) # dic[choice]() # except ValueError: # print('请输入数字...') # except Exception as e: # print(e) # except KeyError: # print('请范围内的数字...') # try: # choice = int(input('请输入:')) # except ValueError: # print('请输入数字...') # except KeyError: # print('请范围内的数字...') # except Exception as e: # print(e)
5 try except excrpt ```else
# try: # print('我的卡扣除100元') # print('旭哥的卡增加了100元') # except NameError: # print('转账出现异常...') # else: # print('转账成功')
6 try except except ... else .finally
# try except except ... else .finally # try finally # try: # print('我的卡扣除100元') # name # print('旭哥的卡增加了100元') # except NameError: # print('转账出现异常...') # else: # print('转账成功') # finally: # print('6666666') # 666不执行 # name # print(666) # try: # name # finally: # print(666) # try: # f = open('t1',encoding='utf-8') # print(f.read()) # '''多个文件句柄的操作''' # f.write() # finally: # # f.close() # print(666) # 最后close() # f.close() # def func(): # try: # return 555 # finally: # '''代码块''' # print(777) # func() # try finally 关闭文件句柄,关闭数据库的链接,关闭网络链接等等
7 主动触发异常
raise TypeError('类型错误') # class Payment: # def pay(self,money): # raise TypeError('你的类中应该用一个pay方法') # # class QQ(Payment): # def pay(self,money): # print('您用qq支付了%s元' % money) # # # class Wechat(Payment): # def pay(self,money): # print('您用微信支付了%s元' % money) # # def pay(obj,money): # obj.pay(money) # a1.pay(200) # # q1 = QQ() # w1 = Wechat() # pay(w1,1000)
8自定义异常(大项目,针对于python不具备的一些错误类型.raise TypeError('类型错误')
name1 : python解释器没法解决的错误: 周星星 # class 周星星(BaseException): # def __init__(self,msg): # self.msg=msg # def __str__(self): # return self.msg # # # # raise EvaException('EvaException:错误!!!!' ) # # # raise TypeError('EvaException:错误!!!!' ) # try: # raise 周星星('EvaException:错误!!!!' ) # except 周星星 as e: # e = EvaException('类型错误') # print(e)
9断言 源码 主动抛出异常
# condition = 1 > 2 # assert condition # 如果条件不满足强行终止. # print(111) # print(222) # print(113331) # print(5455) # if 1 == 2: # print(111) # print(222) # print(113331) # print(5455)