之前我们也接触了异常处理 ,就是使用try把错误信息给改变
因为你的程序在运行的时候如果有错误就会终止程序并且报错,异常处理就是让你的错误信息给显示出来,但是程序还是不会终止的,
如果我们的代码不确定是不是会出错就可以使用异常处理
try
里面的语句全部执行了的话没有报错就会执行else里的语句
try 和 finally可以直接连用
不管上面的except 或者else执行不执行 fnally都会执行
无论是否发生异常 那么try和finamlly一起使用那么也会先指向finally的错误再执行错误信息
finally
叫做无论如何都会执行的代码
fnallyi一般都是和打开文件打开数据库什么的一起使用因为你无论是不是应该怎么执行都是要最后把文件或者数据库给关闭掉
raise 主动抛异常
try:
代码
except:
如果上面有错误就显示这个
try: name int except: #上面错了输出这个 print(1111)
还有第二种
try
代码
except 错误类型:
输出你的错误信息
except 错误类型:
输出你的错误信息
就是看哪个是你的错误类型就执行哪个
try: name int except TypeError: # 如果是类型错误就执行这个 print(666) except NameError: # 如果是名字错误就输出这个 print(1111)
也可以和else使用 如果你的错误信息都没有被执行那么就执行else的内容
try: name int except TypeError: # 如果是类型错误就执行这个 print(666) except NameError : # 如果是名字错误就输出这个 print(1111) else: print(555)
也可以和finally使用 就是无论如何都会执行的代码不管你上面的异常扑捉到没有都会执行的
try: name int except TypeError: # 如果是类型错误就执行这个 print(666) except NameError : # 如果是名字错误就输出这个 print(1111) else: print(555) finally: print(999) # 输出1111 999
# 错误 :语法错误 应该在开发的过程中就杜绝 # 异常 # num = 0 # 100/num # 程序中的异常 : 报错之后程序终止 # try: # # name # NameError # int(input('num : ')) # ValueError # dic = {} # dic['k'] # KeyError # class A:pass # a = A() # a.name # AttributeError # l = [] # l[5] # IndexError # import ab # ImportError # except ValueError: # print('遇到Value error了') # except NameError: # print('遇到name error了') # except KeyError: # print('key Error') # try: # # name # NameError # int(input('num : ')) # ValueError # dic = {} # dic['k'] # KeyError # class A:pass # a = A() # a.name # AttributeError # l = [] # l[5] # IndexError # import ab # ImportError # except Exception as e : # print('exception',e) # l = ['创建老师','创建学校'] # while True: # try: # for num,item in enumerate(l,1): # print(num,item) # index = int(input('num : ')) # print(l[index-1]) # break # except ValueError: # print('请输入一个数字。') # except IndexError: # print('您输入的数字不在选择范围内') # except Exception as e: # print(e) # try: # name = 10 # except NameError: # print('触发了 name error') # else: # print('执行else里的语句了') # try: # print('发短信') # except NameError: # print('触发了 name error') # else: # print('转账成功') # try: # name # except NameError: # print('name error') # else: # print('success') # # finally: # finally 执行try中的代码 不管是否触发了错误 都会执行finally中的代码 # print('finally') # try except try中的代码遇到异常 就执行except中的代码 # try except else try中的代码遇到异常 就执行except中的代码 没遇到异常就执行else中的代码 # trt except else finally try中的代码遇到异常 就执行except中的代码 没遇到异常就执行else中的代码 无论如何都执行finally中的代码 # try finally 不能处理异常了,但是无论是否发生异常,都会执行finally中的代码 # f = open('file') # try: # print('操作f') # finally: # f.close() # def func(): # try: # return 1 # finally: # print('finally') # # func() # import time # def wrapper(func): # def inner(*args,**kwargs): # try: # start = time.time() # return func(*args,**kwargs) # finally: # end = time.time() # print(end - start) # return inner # # @wrapper # def func(): # time.sleep(1) # # func() # 主动触发异常 # raise TypeError # class Payment: # def pay(self,money): # raise NotImplementedError('没有实现pay方法') # class Alipay(Payment): # def pay(self,money): # print('支付宝支付%s元'%money) # # class WechatPay(Payment): # def pay(self,money): # print('微信支付%s元' % money) # # def pay(obj,money): # obj.pay(money) # # we = WechatPay() # pay(we,10) # try: # raise TypeError # except TypeError: # print() # class EvaException(BaseException): # def __init__(self,msg): # self.msg=msg # def __str__(self): # return self.msg # # raise EvaException('错误的内容') # try: # raise EvaException('错误的内容') # except EvaException as e: # print(e) # 断言 # assert 1==2 def func(): a def main(): func() try: main() except: pass