zoukankan      html  css  js  c++  java
  • Python学习笔记(五)——异常处理

    Python 异常总结

    异常名称 解释
    AssertionError 断言语句(assert)失败:当assert关键字后边的条件为假时,程序将抛出该异常,一般用于在代码中置入检查点
    OSError 操作系统产生的异常(例如打开一个不存在的文件)
    OverflowError 数值运算超出最大限制
    ReferenceError 弱引用(weak reference)试图访问一个已经被垃圾回收几只回收了的对象
    RuntimeError 一般的运行时错误
    StopIteration 迭代器没有更多的值
    SyntaxError Python的语法错误
    IndentationError 缩进错误
    TabError Tab和空格混合使用
    SystemError Python编译器系统错误
    TypeError 不同类型间的无效操作
    UnboundLocalError 访问一个未初始化的本地变量(NameError的子类)
    UnicodeError Unicode相关的错误(ValueError的子类)
    UnicodeEncodeError Unicode编码时的错误(UnicodeError的子类)
    UnicodeDecodeError Unicode解码时的错误(UnicodeError的子类)
    UnicodeTranslateError Unicode转换时的错误(UnicodeError的子类)
    ValueError 传入无效的参数
    ZeroDivisionError 除数为零

    Python的异常处理

    try语句

    try:
        sum = 1 + '1'
        f = open('文件.txt')
        print(f.read())
        f.close()
    #异常的统一处理
    except (OSError ,TypeError):
        print('出错了')
    

    try -finally 语句

    try:
        #检测范围
    except Exception[as reason]:
       # 出现异常(Exception)后的处理代码
    finally:
        #无论如何都会被执行的代码
    

    raise语句

    raise ZeroDivisionError('除数为零')
    Traceback (most recent call last):
      File "", line 1, in 
        raise ZeroDivisionError('除数为零')
    ZeroDivisionError: 除数为零
    

    else语句

    在Python中,else语句不仅能够和if搭配,也可以和循环语句for、while搭配使用,else也可以进行异常处理

    else与循环语句搭配使用时,当循环正常结束时不会进行else语句中的内容,只有遇到break语句,则else不执行

    try:
       print(int('abc'))
    except ValueError as reason:
        print('出错了' + str(reason))
    else:
        print('没有异常')
        
        出错了invalid literal for int() with base 10: 'abc'
    
    try:
       print(int('123'))
    except ValueError as reason:
        print('出错了' + str(reason))
    else:
        print('没有异常')
        
    >>> 
    123
    没有异常
    

    with语句

    try:  
        with open('data.txt','w') as f:  
            for each_line in f:  
                print(each_line)  
    except OSError as reason:  
        print('出错啦:' + str(reason))  
    

    使用with语句,避免打开文件没有关闭的情况

    try:
        f = open('data.txt','w')
        for each_line in f:
            print(each_line)
    except OSError as reason:
        print('出错啦:' + str(reason))
    finally:
        f.close()
    

    with的详细说明

  • 相关阅读:
    golang 常见疑惑总结
    golang 详解defer
    golang调试工具Delve
    ACE的源码划分
    通过#define连接字符串的特殊方法[转]
    转:extern "C"的用法解析
    转:3d max 2013 安装教程,凭着一种互联网精神提供给广大朋友
    转:Bullet物理引擎不完全指南(Bullet Physics Engine not complete Guide)
    转:折腾一晚上Bullet及Ogre相关工具的成果 -- 3Ds Max,Maya, blender, GameKit
    转:CMake快速入门教程-实战
  • 原文地址:https://www.cnblogs.com/lelezuimei/p/11289071.html
Copyright © 2011-2022 走看看