(四)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”没有打印

原文地址:https://www.cnblogs.com/pythonlx/p/7806473.html