• Python3 异常


    异常 --- 程序执行时产生的事件,为Python对象

    《Python学习手册》笔记

    异常总是通过实例对象来识别

    默认的异常处理器 --- 打印标准出错信息(包括引发的异常和堆栈跟踪-异常发生时的程序行和函数清单。)
    堆栈跟踪:从旧到新的顺序列出异常

    异常作用:

    1. 错误处理
    2. 事件通知
    3. 特殊情况处理
    4. 终止行为
    5. 非常规控制流程
    except 捕捉异常 --- 语句定义异常处理方法(异常处理器),如果异常无法捕捉进行上层的传递
        (except:)可以捕捉任何异常
    else 执行没有异常发生时的行为
    raise <Class or Instance>引发异常 --- <class #调用不带构造参数的类 ==> Class()>
        当不包括异常名称或数值时,表示重新引发当前异常,一般在exception语句中
        raise exception from otherexception --- 附加otherexception到引发异常exception的__cause__属性
    finally 终止行为 --- 先执行finally代码,再传递异常
    
    assert raise语句的简写
        assert <test>, <data>   如果test为假,引发AssertionError异常,异常说明内容为data
    
    try:
        pass
        #raise <class or instance>
    except <name1>,<name2>,...:
        <statements>
    except <names>:
        <statements>
    else:
        <statements>
    finally:
    

    类异常优点:

    1. 提供类型分类,便于以后修改;
    2. 附加状态信息;
    3. 支持继承;
    4. 超类可以捕捉子类异常;

    BaseException(内置异常超类) -> (Exception) -> 异常类
    sys.exc_info --- 抓取最近发生异常的方式
    当无异常时返回元组(None, None, None);
    当有异常时返回元组(type-异常类型, value-异常类实例, traceback-堆栈跟踪traceback对象)

    内置Exception类可以看做:

    • 内置变量名
    • buildin模块内置名称
    • 标准库模块exceptions属性

    BaseException --- 异常顶级根类
    Exception --- 与应用相关异常的顶层根超类(除了SystemExit,KeyboardInterrupt,GeneratorExit外)
    ArithmeticError --- 所有数值错误超类
    OverflowError --- 识别特定的数值错误的子类

    定制打印显示 --- Exception('显示内容')
    定制数据和行为 --- 同类的定制,except Exception as X: X.属性进行访问
    提供异常细节和异常方法 --- 提供状态信息,通过定制类的属性和行为

    异常设计:

    1. 嵌套异常处理器,语法嵌套,实现复杂控制;
    2. 异常不总是错误,如input函数文件结尾EOFError;
    3. 函数信号条件,当满足条件时引发异常,用以表达结果信号;
    4. 特殊代码块的终止操作,如文件/服务器连接;
    5. try外调试,使用sys.exc_info()读取最近发生异常;
    6. 利用try/except:/else进行进程测试;

    设计注意:

    1. try包装内容;
    2. 避免捕捉太多或过少;
  • 相关阅读:
    5 浏览器跨域问题
    4 html文件引用问题
    3 Oracle 32位客户端安装及arcgis连接
    2 虚拟机Oracle11.2.0.4服务器端,第三方图形化界面安装步骤
    1 主机WiFi连接下与虚拟机通信问题
    数列分块入门 3 题解
    数列分块入门 2 题解
    SDOI2009 HH的项链 题解
    数列分块入门 1 题解
    [SHOI2002]空中都市 题解
  • 原文地址:https://www.cnblogs.com/li1234yun/p/7811358.html
Copyright © 2020-2023  润新知