• 第二十一节:异常处理


    异常处理:

    异常分为2种,

    一种是语法错误:必须在调试的时候处理掉

    一种是逻辑错误:为了保证程序的健壮性与容错性,即在遇到错误时程序不会崩溃,我们需要对此异常进行处理

    Exception异常是其他所有异常类的基类,可代表所有异常
    s1 = 'hello'  #异常多分支
    try:
        int(s1)
    except IndexError as e:  #捕捉指定异常
        print(e)
    except KeyError as e:
        print(e)
    except ValueError as e:
        print(e)
    except Exception as e:  #捕捉其他异常
        print(e)

    自定义异常:

    class MyException(BaseException):
        def __init__(self,msg):
            self.msg=msg
        def __str__(self):
            return self.msg
    
    try:
        raise MynException('类型错误')
    except MyException as e:
        print(e)

    断言:

    assert 1 == 1  
    

    不可捕获的异常:

    NameError:     # 尝试访问一个未申明的变量
    ZeroDivisionError:   # 除数为零
    SyntaxErrot:   # 解释器语法错误
    IndexError:    # 请求的索引元素超出序列范围
    KeyError:   # 请求一个不存在的字典关键字
    IOError:   # 输入/输出错误
    AttributeError:   # 尝试访问未知的对象属性
    ImportError    # 没有模块
    IndentationError   # 语法缩进错误
    KeyboardInterrupt  # ctrl+C
    SyntaxError    # 代码语法错误
    ValueError    # 值错误
    TypeError    # 传入对象类型与要求不符合

    内建异常:
    BaseException    # 所有异常的基类
    SystemExit   # python解释器请求退出
    KeyboardInterrupt   # 用户中断执行
    Exception   # 常规错误的基类
    StopIteration   # 迭代器没有更多的值
    GeneratorExit    # 生成器发生异常来通知退出
    StandardError    # 所有的内建标准异常的基类
    ArithmeticError   # 所有数值计算错误的基类
    FloatingPointError    # 浮点计算错误
    OverflowError    # 数值运算超出最大限制
    AssertionError   # 断言语句失败
    AttributeError    # 对象没有这个属性
    EOFError    # 没有内建输入,到达EOF标记
    EnvironmentError   # 操作系统错误的基类
    IOError    # 输入/输出操作失败
    OSError   # 操作系统错误
    WindowsError   # windows系统调用失败
    ImportError    # 导入模块/对象失败
    KeyboardInterrupt   # 用户中断执行(通常是ctrl+c)
    LookupError   # 无效数据查询的基类
    IndexError    # 序列中没有此索引(index)
    KeyError   # 映射中没有这个键
    MemoryError    # 内存溢出错误(对于python解释器不是致命的)
    NameError    # 未声明/初始化对象(没有属性)
    UnboundLocalError   # 访问未初始化的本地变量
    ReferenceError   # 若引用试图访问已经垃圾回收了的对象
    RuntimeError    # 一般的运行时错误
    NotImplementedError    # 尚未实现的方法
    SyntaxError    # python语法错误
    IndentationError # 缩进错误
    TabError    # tab和空格混用
    SystemError    # 一般的解释器系统错误
    TypeError    # 对类型无效的操作
    ValueError   # 传入无效的参数
    UnicodeError   # Unicode相关的错误
    UnicodeDecodeError   # Unicode解码时的错误
    UnicodeEncodeError   # Unicode编码时的错误
    UnicodeTranslateError   # Unicode转换时错误
    Warning   # 警告的基类
    DeprecationWarning   # 关于被弃用的特征的警告
    FutureWarning    # 关于构造将来语义会有改变的警告
    OverflowWarning    # 旧的关于自动提升为长整形的警告
    PendingDeprecationWarning # 关于特性将会被废弃的警告
    RuntimeWarning   # 可疑的运  行时行为的警告
    SyntaxWarning   # 可疑的语法的警告
    UserWarning    # 用户代码生成的警告

    主动触发异常:

    raise exclass # 触发异常,从exclass生成一个实例(不含任何异常参数)
    raise exclass() # 触发异常,但现在不是类;通过函数调用操作符(function calloperator:"()")作用于类名生成一个新的exclass实例,同样也没有异常参数
    raise exclass, args # 触发异常,但同时提供的异常参数args,可以是一个参数也可以是元组
    raise exclass(args) # 触发异常,同上
    raise exclass, args, tb # 触发异常,但提供一个跟踪记录(traceback)对象tb供使用
    raise exclass,instance # 通过实例触发异常(通常是exclass的实例)
    raise instance # 通过实例触发异常;异常类型是实例的类型:等价于raise instance.__class__, instance
    raise string # 触发字符串异常
    raise string, srgs # 触发字符串异常,但触发伴随着args
    raise string,args,tb # 触发字符串异常,但提供一个跟踪记录(traceback)对象tb供使用
    raise # 重新触发前一个异常,如果之前没有异常,触发TypeError

  • 相关阅读:
    OCP-1Z0-052-V8.02-157题
    OCP-1Z0-052-V8.02-72题
    error C2061: 语法错误 : 标识符“_DebugHeapTag”
    OCP-1Z0-052-V8.02-23题
    OCP-1Z0-052-V8.02-77题
    vc2005 使用Boost库的编译步骤.
    OCP-1Z0-052-V8.02-79题
    OCP-1Z0-052-V8.02-82题
    OCP-1Z0-052-V8.02-81题
    OCP-1Z0-052-V8.02-80题
  • 原文地址:https://www.cnblogs.com/sxdpython/p/12805743.html
Copyright © 2020-2023  润新知