zoukankan      html  css  js  c++  java
  • python的错误类型和异常处理

    # isinstance()
    # 判断实例a是否属于类b
    
    # issubclass()
    
    # 判断类a是否为类b的派生类
    
    
    # 异常处理
    try:
        pass
    #Exception是错误类型,能catch到所有的异常,最好不要写这个,e是错误的信息,python3的写法
    except Exception as e:
        pass
    
    #常用异常的错误类型
    # ValueError:值的类型不正确
    # IndexError:捕获索引错误
    # KeyboardInterrupt:键盘输入ctrl+c,ctrl+d被按下
    # NameError 使用一个还未定义的变量
    # KeyError
    # AssertionError断言错误
    # ZeroDivisionError:0去除一个数字就会报这个错误
    # 缩进,语法错误是谁都抓不住,因为这些代码在解析的时候就会报错,根本还没有到执行
    # Exception抓不住ctrl+c的错误
    
    
    
    
    
    
    
    
    
    
    
    
    # ===========================================================================================
    # 自定义异常
    class Error(Exception):
        def __init__(self,msg):
            self.msg = msg
        def __str__(self):
            return self.msg
    
    
    try:
        raise Error("我的异常")
    except Error as e:
        print(e)
    
    # =============================================================================
    # 断言
    a = 1
    try:
        assert a == 1
        # raise Error("我的异常")
    except Error as e:
        print(e)
    
    
    # 判断assert语句后句的语句是否成立,如果不成立则报错,如果成立,则不报错,这是一个至关重要的
    # 判断,如果这里错误,则程序不会往下走了,主要是告诉别人,这个条件是非常重要的
    
    
    try:
        assert a == 1
        # raise Error("我的异常")
    except xxxx as e:
        print(e)
    finally:
        print("aaaaaaaaaaaaaaaaaaaaa")
    
    
    # finally后面的语句不管前面是否执行报错或者成功,finally的语句肯定会执行
    
    try:
        assert a == 1
        # raise Error("我的异常")
    except Error as e:
        print(e)
    else:
        print("aaaaaaaaaaaaa")
    finally:
        print("aaaaaaaaaaaaaaaaaaaaa")
    
    # else后面的语句,如果前面的不报错,则执行这里的语句
    

    标准错误类型

    AssertionError 断言语句(assert)失败

    AttributeError 尝试访问未知的对象属性

    EOFError 用户输入文件末尾标志EOF(Ctrl+d)

    FloatingPointError 浮点计算错误

    GeneratorExit generator.close()方法被调用的时候

    ImportError 导入模块失败的时候

    IndexError 索引超出序列的范围

    KeyError 字典中查找一个不存在的关键字

    KeyboardInterrupt 用户输入中断键(Ctrl+c)

    MemoryError 内存溢出(可通过删除对象释放内存)

    NameError 尝试访问一个不存在的变量

    NotImplementedError 尚未实现的方法

    OSError 操作系统产生的异常(例如打开一个不存在的文件)

    OverflowError 数值运算超出最大限制

    ReferenceError 弱引用(weak reference)试图访问一个已经被垃圾回收机制回收了的对象

    RuntimeError 一般的运行时错误

    StopIteration 迭代器没有更多的值

    SyntaxError Python的语法错误

    IndentationError 缩进错误

    TabError Tab和空格混合使用

    SystemError python编译器系统错误

    SystemExit Python编译器进程被关闭

    TypeError 不同类型间的无效操作

    UnboundLocalError 访问一个未初始化的本地变量(NameError的子类)

    UnicodeError Unicode相关的错误(ValueError的子类)

    UnicodeEncodeError Unicode编码时的错误(UnicodeError的子类)

    UnicodeDecodeError Unicode解码时的错误(UnicodeError的子类)

    UnicodeTranslateError Unicode转换时的错误(UnicodeError的子类)

    ValueError 传入无效的参数

    ZeroDivisionError 除数为零

    自定义异常的说明

    # 自定义异常,我们自定义一个错误的类,然后继承Exception类,然后我们用前面学到的方法print这个对象,如果我们要print这个对象,那么这个类中就一定要定义
    # __str__方法,所以我们就要在类中定义这个方法,这样我们就可以使用自定义类来捕获错误了
    
    class test_error(Exception):
        def __init__(self,msg):
            self.message = msg
        def __str__(self):
            return self.message
    
    try:
        raise test_error("我错了")
    except test_error as e:
        print(e)
    

      

    主动捕获异常的说明

    def test():
        try:
            raise Exception("主动触发的错误")
        except Exception as e:
            print(e)
    
    
    # raise Exception("主动触发的错误")
    # 这个的意思是创建的了一个Exception类的对象
    # except Exception as e
    # 这个的意思是捕获这个对象,然后赋值给e,然后打印e
    test()
    

      

  • 相关阅读:
    python正则去掉html标签里的css内容
    elasticsearch scroll
    js控制滚动条自动往下滑动
    Pandas导出Excel的时候出现openpyxl.utils.exceptions.IllegalCharacterError异常问题
    C# 动态构建表达式树(二)——构建 Select 和 GroupBy 的表达式
    C# 动态构建表达式树(一)—— 构建 Where 的 Lambda 表达式
    C# 中 async 和 await 的基本使用
    C# 中 AppDomain 的一些理解
    win10家庭版 无法修改hosts文件
    我的第一个Scala程序
  • 原文地址:https://www.cnblogs.com/bainianminguo/p/7242813.html
Copyright © 2011-2022 走看看