zoukankan      html  css  js  c++  java
  • 一. python错误处理

    一. 错误处理

    异常处理
    捕捉异常可以使用try/except语句。
    try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
    如果你不想在异常发生时结束你的程序,只需在try里捕获它。
    格式:
    try :
         语句1
    except 错误代码 as e:
        语句2
    
    except 错误代码 as e:
        语句3
    ......
    except 错误代码 as e:
        语句n
    else:
    
        语句e
        
    注意  else 可有可无
    
    作用: 用来检测try 语句块的错误  从而让except语句捕获异常信息并处理
    
    逻辑: 当程序执行到try ---except --else 语句时
    
    1  如果try 语句1 执行出现错误 会匹配第一个错误码 如果匹配上就执行 语句
    
    2 如果当try 语句1 执行出现错误  没有匹配的异常 错误将会 被提交到上一层的try 语句 或者到程序的最上一层
    
    3 如果当try 语句1 执行没有出现错误 执行else 下的语句e
    try:
        print(3/1)
    except NameError as e:
        print("没有改变量")
    except ZeroDivisionError as e:
         print("除数为0")
    else:
        print("代码没有问题了")
    print(".....................................")
    
    # 使用except 而不使用 任何的错误类型
    try:
        print(4/0)
        print(num)
    except:
        print("程序出现了异常")
    # 使用except带有多种异常
    try:
       print(5/0)
    except(NameError,ZeroDivisionError)
    print("出现了NameError或‘ZeroDivisionError")  
    以上例子不管 try 子句里面有没有发生异常,finally 子句都会执行。
    如果一个异常在 try 子句里(或者在 exceptelse 子句里)被抛出,
    而又没有任何的 except 把它截住,那么这个异常会在 finally 子句执行后再次被抛出。
    下面是一个更加复杂的例子(在同一个 try 语句里包含 exceptfinally 子句):
    
    格式:
    
    try :
         语句1
    except 错误代码 as e:
    
        语句2
    
    except 错误代码 as e:
    
        语句3
    
    ......
    except 错误代码 as e:
    
        语句n
    finally:
    
        语句f
        
    作用 :语句t无论是否有错误 都讲执行最后的语句f
    
    try: 
        print(1/0)
    
    finally:
    
        print("必须执行我")
    # Exception  万能异常处理
    
    try:
        print("1")
        1/0
        name
        2+'3'
        []['K']
    except Exception:
        print("错了")
    异常名称    描述
    BaseException    所有异常的基类
    SystemExit    解释器请求退出
    KeyboardInterrupt    用户中断执行(通常是输入^C)
    Exception    常规错误的基类
    StopIteration    迭代器没有更多的值
    GeneratorExit    生成器(generator)发生异常来通知退出
    StandardError    所有的内建标准异常的基类
    ArithmeticError    所有数值计算错误的基类
    FloatingPointError    浮点计算错误
    OverflowError    数值运算超出最大限制
    ZeroDivisionError    除(或取模)零 (所有数据类型)
    AssertionError    断言语句失败
    AttributeError    对象没有这个属性
    EOFError    没有内建输入,到达EOF 标记
    EnvironmentError    操作系统错误的基类
    IOError    输入/输出操作失败
    OSError    操作系统错误
    WindowsError    系统调用失败
    ImportError    导入模块/对象失败
    LookupError    无效数据查询的基类
    IndexError    序列中没有此索引(index)
    KeyError    映射中没有这个键
    MemoryError    内存溢出错误(对于Python 解释器不是致命的)
    NameError    未声明/初始化对象 (没有属性)
    UnboundLocalError    访问未初始化的本地变量
    ReferenceError    弱引用(Weak reference)试图访问已经垃圾回收了的对象
    RuntimeError    一般的运行时错误
    NotImplementedError    尚未实现的方法
    SyntaxError    Python 语法错误
    IndentationError    缩进错误
    TabError    Tab 和空格混用
    SystemError    一般的解释器系统错误
    TypeError    对类型无效的操作
    ValueError    传入无效的参数
    UnicodeError    Unicode 相关的错误
    UnicodeDecodeError    Unicode 解码时的错误
    UnicodeEncodeError    Unicode 编码时错误
    UnicodeTranslateError    Unicode 转换时错误
    Warning    警告的基类
    DeprecationWarning    关于被弃用的特征的警告
    FutureWarning    关于构造将来语义会有改变的警告
    OverflowWarning    旧的关于自动提升为长整型(long)的警告
    PendingDeprecationWarning    关于特性将会被废弃的警告
    RuntimeWarning    可疑的运行时行为(runtime behavior)的警告
    SyntaxWarning    可疑的语法的警告
    UserWarning    用户代码生成的警告
    ""
    try:
        print(3/1)
    except NameError as e:
        print("没有改变量")
    except ZeroDivisionError as e:
         print("除数为0")
    else:
        print("代码没有问题了")
    print(".....................................")
    
    
    
    # 使用except 而不使用 任何的错误类型
    try:
        print(4/0)
        print(num)
    except:
        print("程序出现了异常")
    # 使用except带有多种异常
    
    
    
    try:
       print(5/0)
    except(NameError,ZeroDivisionError):
             print("出现了NameError或‘ZeroDivisionError")
  • 相关阅读:
    实验一 GIT 代码版本管理
    DS博客作业05--查找
    DS博客作业04--图
    DS博客作业03--树
    DS博客作业02--栈和队列
    DS博客作业01-线性表
    C博客作业05--2019-指针
    C语言博客作业04--数组
    C语言博客作业03--函数
    python exp4 jieba+wordcloud
  • 原文地址:https://www.cnblogs.com/Sup-to/p/10865397.html
Copyright © 2011-2022 走看看