zoukankan      html  css  js  c++  java
  • (四)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”没有打印

  • 相关阅读:
    本机可以,服务器却不行
    学习摘录1Hello, World!
    钻石问题
    OPEN OFFICE使用技巧
    操作符的重载
    函数重载
    关于“结构”好别扭的一段话
    多重继承
    OPEN OFFICE操作技巧3
    70个现代风格的HTML5 WordPress主题网站
  • 原文地址:https://www.cnblogs.com/pythonlx/p/7806473.html
Copyright © 2011-2022 走看看