• (四)4-3 Python的异常


    异常
    异常即是一个事件,该事件在执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。异常是Python对象,表示一个错误,当python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
    a、异常的常用形式
    常用的异常处理形式

    try:
        pass
    except:
        发生异常处理的代码
    else:
        如果没有异常执行这块代码
    finally:
        不管如何,最后一定要执行的代码

    例如:

    try:
        10 / 0
    except Exception as e:
        print "异常内容:", e
        # raise e
    else:
        print("ok")
    finally:
        print('finally')

    运行结果:

    异常内容: integer division or modulo by zero
    finally

    注:
    没有捕获异常,直接走else,最后还走finally,不管有没有捕获异常finally最后都要执行的。

    延伸说明
    object 所有类的基类
    Exception 所有异常类的基类

    a = [1,2,3]
    # print(a[5])  #获取异常类型
    try :
        print(a[5])
    except IndexError as e :  #except Exception as e:
        print(e)

    运行结果:

    list index out of range

    b、Exception 异常类
    Exception 是所有异常基础类,对于python的标准异常,如下
    异常名称 描述
    BaseException 所有异常的基类
    Exception 常规错误的基类

    c、raise关键字
    raise 用来触发异常
    语法如下:
    raise [Exception [,args [,traceback]]]
    语句中Exception 是异常的类型,参数是一个异常数值,改参数可选,如不提供,异常的参数是"None"
    最后一个参数是可选的,如果存在,是跟踪异常对象
    例如:

    try:
        100/0
    except Exception as e:
        print("异常内容:",e)
        raise  e
    else:
        print("ok")
    finally:
        print("finally")
    print("hello cnblogs")

    运行结果:

    ('xe5xbcx82xe5xb8xb8xe5x86x85xe5xaexb9xefxbcx9a', ZeroDivisionError('integer division or modulo by zero',))
    finally
    Traceback (most recent call last):
      File "D:/PYTHONLX/Pythonlx/Գ��/9�쳣/9_3.py", line 7, in <module>
        raise  e
    ZeroDivisionError: integer division or modulo by zero

    注:
    raise 关键字就是捕获到异常,并输出,程序运行终止。但是finally还是会执行。最后的“hello cnblogs”没有打印

  • 相关阅读:
    CSS3 经典教程系列:CSS3 线性渐变(linear-gradient)
    JS定义函数
    CSS选择器和jQuery选择器的区别与联系
    jQuery 选择器、遍历方法
    jQuery中$()函数
    JS对象和Jquery对象
    [Alpha]Scrum Meeting#2
    [Alpha]Scrum Meeting#1
    knowledge_docker
    problems_docker
  • 原文地址:https://www.cnblogs.com/pythonlx/p/7806473.html
Copyright © 2020-2023  润新知