• python之异常处理


    1、语法错误和异常

    语法错误是在代码执行前可以检测的,由于不符合代码语法规范引起的

    异常指程序运行过程中导致的超出预期处理能力的情况

    常见的异常:

    • 0作为除数
    • 未定义的对象被直接使用,比如参与运算或者调用其属性和方法
    • str类型直接和非str类型相加
    • 输入输出与系统异常等

    异常有两种处理方式:直接捕获进行处理,将其抛出由上级(调用异常代码)进行处理

    2、捕获

    (1)完整结构

    try:
    	执行代码
    except:
        发生异常时执行的代码
    else:
        没有异常时执行的代码
    finally:
        无论是否发生异常时执行的代码
    
    • else和finally结构是可以省略的
    • finally结构实际可以考虑直接放在外部,这里主要是为了逻辑阐述的强迫性,保持功能的完整
    • 一般关闭资源之类的操作会习惯放在finally在

    (2)except

    try:
        pass
    except OSError as err
    	print("OS error: {0}".format(err))
    except ValueError:
        pass
    except (RuntimeError, TypeError, NameError):
        pass
    except:
        pass
    
    • try后可以跟多个except结构,从上到下匹配,匹配到后即执行,不再匹配其它except结构,而是考虑except之和else或者finally结构
    • 一般将描述越详细的异常类型放在前面,将描述越宽广的类型放在后面
    • 如果except后没有跟异常类型,表示匹配所有异常类型,一般放在except的末尾
    • except ... as ...结构为异常取一个别名,一般是考虑到异常类型会比较详细显得冗长,起一个简短的别名,方便在except内部使用
    • 如果多个异常的处理方法一致,可以在一个except后添加一个元组,在元组中声明并列的多个异常类型

    3、抛出

    使用关键字raise,其后跟一个Exception的对象或者其类型的子类型的对象,完成抛出

    if x > 5:
    	raise Exception('这里发生了异常,x>5')
    
    • 一个方法中存在抛出异常的行为,则调用该方法的代码需要进行捕获,捕获的类型为抛出时创建的异常类型

    4、自定义异常

    class MyError(Exception):
        def __init__(self, value):
            self.value = value
    	def __str__(self):
    		return repr(self.value)
    
    • 一般自定义异常,就是创建一个能够显示异常类型的类名的类,不需要做其它操作
    • 其作用就是记录异常类型和异常信息,在传递过程中方便被调用查看
  • 相关阅读:
    B/S实现大文件上传
    csharp实现大文件上传
    C#实现大文件上传
    h5批量下载文件
    association 的使用
    简单的MD5查询工具
    struts开发<struts中的參数传递.三>
    (转)SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)
    (转)SQL SERVER的锁机制(一)——概述(锁的种类与范围)
    (转)SQL Server 中的事务和锁(三)-Range S-U,X-X 以及死锁
  • 原文地址:https://www.cnblogs.com/heibaimao123/p/16282794.html
Copyright © 2020-2023  润新知