• Python3笔记046


    第9章 异常处理及程序调试

    9.1 异常处理

    python中常见的异常

    序号 异常 描述
    01 NameError 尝试访问一个没有声明的变量引发的错误
    02 IndexError 索引超出序列范围引发的错误
    03 IndentationError 缩进错误
    04 ValueError 传入的值错误
    05 KeyError 请求一个不存在的字典关键字引发的错误
    06 IOError 输入输出错误
    07 ImportError 当import语句无法找到模块引发的错误
    08 AttributeError 尝试访问未知的对象属性引发的错误
    09 TypeError 类型不合适引发的错误
    10 ZeroDivisionError 除数为0引发的错误

    异常处理语句

    1、try...except语句

    使用try...except语句捕获异常,当程序出错时,输出错误信息后,程序会继续执行。

    # 异常语法
    try:
        block1
    except [ExceptionName [as alias]]:
        block2
    参数说明:
    block1:表示可能出现错误的代码块
    [ExceptionName [as alias]]:可选参数,用于指定要捕获的异常。
    block2:表示进行异常处理的代码块。
    
    # try...except举例,最常用的,只给出笼统的异常名称:Exception
    try:
        value = 8 / 0
        print("value is:", value)
    except Exception as e:
        print(e)
    # try...except举例,给出具体的异常匹配名称:ZeroDivisionError
    try:
        value = 8 / 0
        print("value is:", value)
    except ZeroDivisionError:
        print("0不能作为除数!")
    

    2、try...except...else语句

    # try...except...else举例
    try:
        value = 8 / 2
        print("value is:", value)
    except ZeroDivisionError:
        print("0不能作为除数!")
    else:
        print("value is normal")
    

    3、try...except...finally语句

    try:
        block1
    except [ExceptionName [as alias]]:
        block2
    finally:
    	block3
    参数说明:
    finally:在任何情形都必须执行的代码,放在block3代码块中
    
    # try...except...finally举例
    '''
    异常处理流程:将有可能出错的代码放在try语句后,将出错类型放在except语句后,一个except后面接一种异常类型,可以有多个except,将必须执行的代码放在finallly语句中。程序开始执行,第一种情况try语句后面的代码未出错,就不执行except语句,执行finally语句;第二种情况出错类型匹配成功,执行相应的except语句的代码,执行finally语句;第三种情况出错类型匹配不成功,报错,继续执行finally语句。
    '''
    try:
        value = 8 / 2
        print("value is:", value)
    except ZeroDivisionError:
        print("0不能作为除数!")
    except NameError:
        print("name is not defined")
    finally:
        print("finally一定会被执行的")
    

    4、使用raise语句抛出异常

    如果某个函数或方法可能会产生异常,但不想在当前函数或方法中处理这个异常,则可以使用raise语句在函数或方法中抛出异常。在抛出异常时,要尽量选择合理的异常对象,而不应该抛出一个与实际内容不相关的异常。

    raise [ExceptionName[(reason)]]
    
    # raise 举例
    def mye( level ):
        if level < 1:
            raise Exception,"Invalid level!"
            # 触发异常后,后面的代码就不会再执行
    try:
        mye(0)  # 触发异常
    except Exception,err:
        print 1,err
    else:
        print 2
    
  • 相关阅读:
    《HTTP 权威指南》笔记:第十二章 基本认证体制
    os模块,序列化模块
    常用模块,时间模块,sys模块
    random模块
    re模块
    正则表达式
    模块和包
    内置方法及模块初识,set的hash算法面试题
    fromkeys,eval,join的使用
    反射及内置方法
  • 原文地址:https://www.cnblogs.com/infuture/p/13383441.html
Copyright © 2020-2023  润新知