zoukankan      html  css  js  c++  java
  • 异常处理

    一、异常处理

    """
    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---

  • 相关阅读:
    kettle excel input 利用通配符一次读入多份文件
    PowerDesigner Name、Code 映射设置
    PowerDesigner 建立约束
    PowerDesigner 创建概念模型、转换显示风格、概念模型转逻辑模型
    SQL 语言分类
    PowerDesigner 使用域、逻辑模型转物理模型、查看DDL语句
    DB、ETL、DW、OLAP、DM、BI关系结构图
    读懂BI商业智能与大数据应用的区别
    java 生成excel
    IntelliJ IDEA 2016 2.5 安装 并使用其新建一个maven web项目部署发布
  • 原文地址:https://www.cnblogs.com/guojieying/p/13493425.html
Copyright © 2011-2022 走看看