python基础--异常

mac2024-11-17  8

处理异常的目的是保证程序在出现错误的时候,可以继续执行下去,而不会立即终止

语法: try:      代码块(可能会出错的语句) except 异常类型 as异常名:      代码块(出现错误的处理方式) except 异常类型 as 异常名:      代码块(出现错误的处理方式) … else:      代码块(没有错误时执行的语句) finally:      代码块(是否有异常都回执行)

print ('程序开始...') try: print(20/0) except print('程序出错啦') else; print('程序正常') finally: print('hello')

异常的传播

#函数中异常不进行处理 def fn(): print('hello') print(10/0) #函数中对异常进行处理 def fn1(): try: print(10/0) except: print('fn1函数中有错误,请检查...') print('hello') #调用函数时对异常处理 try: fn() except: print('出错了')#执行时,程序不会报错 print('hello') fn()#执行时,程序会报错 fn1()#执行时,程序不会报

通过上面的代码可以看出 1、如果函数中没有对异常进行处理,则异常会继续想函数调用处传播 2、当在函数中出现异常,若在函数中对异常进行处理,则异常不会传播 3、函数调用处对异常进行处理,则不在传播,如果没有处理,则继续向调用处传播,直到传播到全局作用域,如果依然没有处理,则程序停止,并且显示异常信息

异常对象

当程序运行过程中出现异常以后,所有异常信息会被专门保存到一个异常对象中,而异常传播时,实际就是异常对象跑给了调用处

print('程序开始,异常出现前') try: print(A) print(20/0) except: print('程序出错了!!!') print ('异常出现后') print('程序开始,异常出现前') try: print(A) print(20/0) except NameError: print('出现NameError!!!') print ('异常出现后') print('程序开始,异常出现前') try: print(A) print(20/0) except Exception as e: print('程序出错了!!!') print(e,tpye(e)) print ('异常出现后')

通过上面三个代码块可以看出: 1、except后面不跟任何内容可以捕获所有异常 2、except后面跟一个异常类型,则只会捕获该类型的异常 3、如果except后跟的是Exception 它会捕获到所有的异常 4、Exception 是所以异常类的父类

自定义异常对象

class Myerror(Exception):#定义异常类 print('参数中有负数') def fn(a,b): if a<0 or b<0: raise Myerror r=a+b return r print(fn(-1,2))

通过上面代码块可以看出,可以通过raise抛出异常信息, 抛出异常的目的,告诉调用者这里调用时可能出现问题,希望调用者处理下 raise后面需要跟一个异常类或者异常实例

最新回复(0)