异常
异常即是一个事件,该事件在执行过程中发生,影响了程序的正常执行。一般情况下,在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”没有打印