• 异常处理


    一、异常处理

    """
    1、什么是异常
        异常是错误发生的信号,一旦程序出错就会产生一个异常
        如果该异常没有被处理,该异常就会被抛出来,程序的运行随即终止
    
        异常是由三部分组成
            1、具体哪一行代码抛出的异常
            2、异常的种类
                NameError:变量名没有定义过
                IndexError:索引不存在
                    l=[11,22]
                    l[100]
                KeyError
                    d={"k1":11}
                    d["k2"]
    
                AttributeError:对象属性不存在
                    对象.属性
    
                ValueError:
                    int("asdf")
    
                TypeError:
                    "asdf"+1111
    
                ZeroDivisionError
                    1/0
            3、异常的内容信息
    
    2、为何要处理异常
        为了增强程序的健壮性
    
    3、如何处理异常
        1、针对语法的错误:应该在程序运行前立即改正
        2、针对逻辑错误:
            2.1 如果逻辑错误发生的条件是可以预知的,应该if判断解决,预防异常
                age = input('>>: ').strip()
                if age.isdigit():
                    age=int(age)
                    if age > 18:
                        print('too big')
                    elif age < 18:
                        print('too small')
                    else:
                        print("got it")
                else:
                    print('必须输入数字')
            2.2 如果逻辑错误发生的条件是不可预知的,那么异常一个会发生,考虑到程序的健壮性
                我们应该处理异常,做好补救措施
                try:
                    代码块
                except 异常的类型:
                    发生异常后要执行的代码
    
    """
    
    
    # 例1
    # try:
    #     print("====>111")
    #     print("====>222")
    #     xxx
    #     print("====>333")
    # except AttributeError as e:
    #     print(e)
    #
    # print('====>4')
    
    # 例2
    # try:
    #     print("====>111")
    #     print("====>222")
    #     xxx
    #     print("====>333")
    # except NameError as e:
    #     print(e)
    #
    # print('====>4')
    
    # # 例3
    # try:
    #     print("====>111")
    #     print("====>222")
    #     # xxx
    #     # l=[]
    #     # l[0]
    #     dic={}
    #     dic["k1"]
    #     print("====>333")
    # except (NameError,IndexError) as e:
    #     print("=---->",e)
    # except KeyError as e:
    #     print(e)
    #
    # print('====>4')
    
    # # 例4
    # try:
    #     print("====>111")
    #     print("====>222")
    #     xxx=111
    #     # l=[]
    #     # l[0]
    #     dic={}
    #     # dic["k1"]
    #     print("====>333")
    # except (NameError,IndexError) as e:
    #     print("=---->",e)
    # except KeyError as e:
    #     print(e)
    # finally:
    #     print("一定会运行")
    # print('====>4')
    # # print(xxx)
    
    
    # # 例4
    # try:
    #     print("====>111")
    #     print("====>222")
    # finally:
    #     print("一定会运行")
    # print('====>4')
    # # print(xxx)
    
    # # 例5
    # try:
    #     print("====>111")
    #     print("====>222")
    #     # xxx
    #     l=[]
    #     # l[0]
    #     dic={}
    #     dic["k1"]
    #     print("====>333")
    # except Exception as e:
    #     print("万能异常",e)
    # print('====>4')
    
    # 例6
    # print('==>11')
    # raise NameError("变量名未定义")
    # print('==>222')
    
    
    # class Animal:
    #     def speak(self):
    #         raise BaseException("小垃圾必须实现speak方法来覆盖")
    #
    #     def run(self):
    #         raise BaseException("小垃圾必须实现run方法来覆盖")
    #
    #
    # class Dog(Animal):
    #     pass
    #
    # class Pig(Animal):
    #     pass
    #
    #
    # d=Dog()
    # p=Pig()
    #
    # d.speak()
    # d.run()
    
    # p.speak()
    # d.run()
    
    # 例7
    # class Interface(BaseException):
    #     def __init__(self, msg, x, y, z):
    #         self.msg = msg
    #         self.x = x
    #         self.y = y
    #         self.z = z
    #
    #     def __str__(self):
    #         return "<%s:%s:%s:%s>" % (self.msg,self.x,self.y,self.z)
    #
    #
    # raise Interface("接口异常", 11, 22, 33)
    
    # 例8:
    
    print("====1")
    print("====2")
    print("====3")
    salaries=[1.1,2.2]
    
    # if len(salaries) != 3:
    #     raise NameError
    assert len(salaries) == 3
    
    print(salaries[2])
    print(salaries[2])
    print(salaries[2])
    print(salaries[2])
    print(salaries[2])
    print(salaries[2])
    print(salaries[2])
    print(salaries[2])
    print(salaries[2])
    print(salaries[2])
    print(salaries[2])
    print(salaries[2])

    ---28---

  • 相关阅读:
    Z-stack之OSAL初始化流程
    回调函数
    VCC,VDD,VEE,VSS,VPP 表示的意义
    ARM内核全解析,从ARM7,ARM9到Cortex-A7,A8,A9,A12,A15到Cortex-A53,A57
    SQL Server 2005 版本的操作系统兼容性详细列表
    Windows Xp Home Edition 安装IIS组件
    MySql 5.7中添加用户,新建数据库,用户授权,删除用户,修改密码
    AtCoder Beginner Contest 077(ABC)
    Codeforces Round #441 (Div. 2, by Moscow Team Olympiad)(A B C D)
    B. Which floor?
  • 原文地址:https://www.cnblogs.com/guojieying/p/13493425.html
Copyright © 2020-2023  润新知