zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    [2021.8集训Day10/JZOJ.3410]【GDOI2014模拟】Tree
    [2021.8集训Day10/JZOJ.3441]【NOIP2013模拟】小喵喵的新家
    [模板]模拟退火 / 洛谷 P1337 [JSOI2004]平衡点
    P1600 [NOIP2016 提高组] 天天爱跑步
    P4556 [Vani有约会]雨天的尾巴 /【模板】线段树合并
    selenium的三种等待
    python中socket、socketio、flask-socketio、WebSocket的区别与联系
    (十二)python3 迭代器
    (十一)python3 encode()和decode()
    (十)python3 生成器
  • 原文地址:https://www.cnblogs.com/daien522556/p/9296726.html
Copyright © 2011-2022 走看看