zoukankan      html  css  js  c++  java
  • 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. 避免捕捉太多或过少;
  • 相关阅读:
    UVA 11174 Stand in a Line,UVA 1436 Counting heaps —— (组合数的好题)
    UVA 1393 Highways,UVA 12075 Counting Triangles —— (组合数,dp)
    【Same Tree】cpp
    【Recover Binary Search Tree】cpp
    【Binary Tree Zigzag Level Order Traversal】cpp
    【Binary Tree Level Order Traversal II 】cpp
    【Binary Tree Level Order Traversal】cpp
    【Binary Tree Post order Traversal】cpp
    【Binary Tree Inorder Traversal】cpp
    【Binary Tree Preorder Traversal】cpp
  • 原文地址:https://www.cnblogs.com/li1234yun/p/7811358.html
Copyright © 2011-2022 走看看