zoukankan      html  css  js  c++  java
  • python_异常处理_断言

    一、Python标准异常

    常用异常
    Exception 常规错误的基类
    AttributeError 试图访问一个对象没有的属性
    IOError 输入/ 输出异常,基本上是无法打开文件
    ImportError 无法引入模块或包,一般为路径或名称错误
    IndentationError 语法错误,代码没有正确对齐(缩进错误)
    IndexError 下标索引超出序列边界
    KeyError 试图访问字典里不存在的键
    keyboardInterrupt Ctrl+C被按下
    NameError 使用一个未被赋予的变量
    SyntaxError Python代码非法,代码不能编译
    UNboundLocalError 试图访问一个还未被设置的局部变量
    ValueError 传入一个调用者不期望的值,即类型是正确的
    TypeError 对类型无效的操作
    标准异常
    BaseException 所有异常的基类
    SystemExit 解释器请求退出
    Stoplteration 迭代器没有更多的价值
    GeneratorExit 生成器(generator)发送异常来通知退出
    StandarError 所有的内建标准异常的基类
    ArithmeticError 所有数值计算错误的基类
    FloatingPointError 浮点计算错误
    OverflowError 数值运算超出最大限制
    ZerodivisionError 除(或取模)零(所有数据类型)
    AssertionError 断言语句失败
    EOFError 没有内建输入,到达EOF标记
    EnvironmentError 操作系统错误的基类
    OSError 操作系统错误
    WindowsError 系统调用失败
    ImportError 无效数据查询的基类
    MemoryError 内存溢出错误
    ReferenceError 弱引用(weak reference)试图访问已经垃圾回收了的对象
    RuntimeError 一般的运行时的错误
    NotlmplementedError 尚未实现的方法
    TabError Tab和空格混用
    SystemError 一般的解释器系统错误
     UnicodeError  Unicode相关的错误
     UnicodeDecodeError Unicode解码时的错误 
     UnicodeEncodeError Unicode编码时错误 
     UnicodeTranslateError Unicode转换时错误 
     Warning 警告的基类 
    DeprecationWarning 关于被弃用的特征的警告
    Futurewarning 关于构造将来语义会有所改变的警告
    OverflowWarning 旧的关于自动提升为长整型(long)的警告
    PendingDeprecationWarning 关于特性将会被废弃的警告
    RuntimeWarning 可疑的运行时行为(runtime behavior)的警告                                                       
    SyntaxWarning 可疑的语法的警告
    UserWarning 用户代码生成的警告

     二、异常处理

    1.

    def yichang():
        while True:
            try:
                num = int(input('>>'))
                num += 1
                print('',num)
            except Exception as e:
                print('{%s}我是一个错误..'%e)
    
    yichang()
    捕获异常的基础写法
    >>3435
    >>s
    {invalid literal for int() with base 10: 's'} 我是一个错误。。
    >>
    result

    2.

    def yichang():
        while(True):
            try:
                num = int(input('>>'))      # 字符无法强制转换为整型
                num = num+1
                print("",num)
            except (ValueError ,TypeError) as e:
                print("我是一个调用者不期望的错误。。。",e)
            except Exception as e:         # e 是try ..except .. 捕获到的异常,Exception 是基类(可以捕获全部的异常)
                print('{%s} 我是一个错误。。'% e)
            else:
                print("要是上面没有错会执行我。。else")
            finally:
                print('不管上面错不错误【都会】执行我。。finally,yes,yes!!')
                
    yichang()
    异常处理完全~版~,yes!!
    >>12
    要是上面没有错会执行我。。else
    不管上面错不错误【都会】执行我。。finally,yes,yes!!
    >>d
    我是一个调用者不期望的错误。。。 invalid literal for int() with base 10: 'd'
    不管上面错不错误【都会】执行我。。finally,yes,yes!!
    >>
    result

    三、断言(assert)

    明确的判断前面的某个条件是否符合你的要求,如果不符合,程序就是根本走不下去的错误,直接退出或抛出错误。例如:连接远程的ftp , 没有IP地址,就根本连接不上

    q=2
    try:
        assert q == 1+1
        assert q ==1+2      # 错误可以被抓住,但对于 这种错误最好不要去抓
    except Exception as e:
        print('我是被抓住的错误。。。%s' % e)
    
    assert q ==1+1
    assert 1 == 1+2
    断言
    我是被抓住的错误。。。
    Traceback (most recent call last):
      File "D:/1.pycharm/day2018_11_15/断言.py", line 21, in <module>
        assert 1 == 1+2
    AssertionError
    result

    关于断言:https://www.cnblogs.com/shangren/p/8038935.html

    断言是用来检查非法情况而不是错误情况的,用来帮开发者快速定位问题的位置。
    异常处理用于对程序发生异常情况的处理,增强程序的健壮性和容错性。

     

  • 相关阅读:
    静态类、抽象类的笔记
    第一篇
    流复制操作
    速记服务器状态码
    访问修饰符
    jquery对象、js全局变量等tips
    Caching and Indexing
    Using X++ copy the favorites from one user to another
    SID
    Using X++ get Language List from Dynamics AX 2009
  • 原文地址:https://www.cnblogs.com/Vera-y/p/9966055.html
Copyright © 2011-2022 走看看