• 十、异常处理


    异常是错误发生的信号

    一、异常分为三部分

    1、异常的追踪信息

    2、异常的类型

    3、异常的值

    二、异常的分类

    1、语法异常

    这类异常应该在程序执行前就改正

    2、逻辑异常

    AttributeError     试图访问一个对象没有的属性
    IOError      输入/输出异常;基本上是无法打开文件
    ImportError     无法引入模块或包;基本上是路径问题或名称错误
    IndentationError      语法错误的子类;代码没有正确对齐
    IndexError     下标索引超出序列边界
    KeyError     试图访问字典里不存在的键
    KeyboardInterrupt     ctrl+c被按下
    NameError     使用一个还未被赋予对象的变量
    SyntaxError     代码非法,代码不能编译
    TypeError     传入对象类型与要求的不符合
    UnboundLocalError     试图访问一个还未被设置的局部变量,基本上与由于另有一个同名的全局变量,导致你以为你正在访问它
    ValueError     传入一个调用者不期望的值,即使值的类型是正确的

    三、异常处理

    如果错误发生的条件是可预知的,可用if判断处理,在错误发生前进行预防;
    如果错误发生的条件是不可预知的,则需要用到try...except...,在错误发生之后进行处理

    基本语法:

    try:

        代码块

    except 异常类型:

        代码块

    try语句按照如下方式工作:
    1、首先执行try子句(在关键字和关键字except之间的语句)
    2、如果没有异常发生,忽略except子句,try子句执行后结束
    3、如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和except之后的名称相符,那么对应的except子句将被执行。最后执行try语句之后的代码
    4、如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中

    一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。

    处理程序将只针对对应的try子句中的异常进行处理,而不是其他的 try 的处理程序中的异常。
    一个except子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组

    万能异常处理:

    try:

        代码块

    except Exception as 别名     #把异常的值赋值给一个别名

        代码块

    try...else...     

    else不能单独使用,必须与except连用,意思是else的子代码块会在没有任何异常的情况下执行

    try...finally   

    无论有没有异常发生都会执行,用在回收系统资源的时候

    主动触发异常:
    raise

    断言:

    assert

    自定义异常

    通过创建一个新的exception类来拥有自己的异常。异常应该继承自Exception类

  • 相关阅读:
    windows的端口映射
    windows的ics
    关于windows的右键菜单项 注册表删除
    dig的使用 openwrt
    linux环境变量相关
    Difference between 2>&-, 2>/dev/null, |&, &>/dev/null and >/dev/null 2>&1
    openwrt ipv6
    ros资料参考
    ipv6的相关参考资料
    supervisor
  • 原文地址:https://www.cnblogs.com/Python1/p/8981288.html
Copyright © 2020-2023  润新知