day28 异常处理

    针对异常处理的方法
1,try ...except  单个情况
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
'''
# 什么是异常??
# 由错误引发的,而且出现异常就会终止程序.
# 为什么要进行异常处理:
#1, 异常就会终止程序,用户体验极差,
#2, 让你的代码不冗余.
# 异常处理:
# 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)

猜你喜欢

转载自www.cnblogs.com/daien522556/p/9296726.html
今日推荐