python之异常
1 ''' 2 异常的概念 :代码产生错误,无法继续执行 3 异常的产生 4 异常的捕获与处理 5 函数调用栈 6 自定义异常 7 ''' 8 #导入模块,可以打印出报错的详细信息 9 # import traceback 10 # 11 # # 异常的产生, 解决方法:1.if 过滤(这个方法适合提前已知可能出现的bug) 12 # # 2.事后处理 :可以处理未知的异常 try: except: 13 # while True: 14 # num = input('input a num:') 15 # try: 16 # print('100 / %s = %s' % (num,100.0/int(num))) 17 # # except ZeroDivisionError:#捕获处理这种异常 18 # # print('处理方案,除数不能为0') 19 # # #打印出具体异常是什么,用as + 变量 ,然后打印出变量 20 # # except ValueError as error: # 捕获处理这种异常 21 # # print('处理方案,除数不能为非数字字符',error) 22 # #获取所有异常 23 # # except Exception: 24 # # print('有异常,但不清楚是什么异常') 25 # #简写 捕获所有异常 26 # except: 27 # print('缩写,但不清楚是什么异常') 28 # print('缩写',traceback.format_exc()) #打印出报错的详细信息 ,展示报错的行号 29 30 31 # 函数调用栈 ,异常是从下一层层往上抛的 ,f3报错,一层层都会报错,所以下面总共有4个错误 32 #自己写的代码的话,一般在最下面的那行报错就是报错的原因 33 #如果调用第三方库报错,最下面的那行报错一般不知道是什么错误,一般就看在哪里调用的第三方库的方法 34 #这种多层报错的,一般都是哪边方便加就到哪边加异常处理 35 # def f3(): 36 # print("in - f3,start") 37 # b = 4/0 #这里会报错 38 # print("in - f3,end") 39 # def f2(): 40 # print("in - f3,start") 41 # f3() 42 # print("in - f3,end") 43 # 44 # def f1(): 45 # print("in - f3,start") 46 # f2() 47 # print("in - f3,end") 48 # f1() 49 50 #自定义异常 51 # #异常是个类,自定义的异常需要先抛出再进行捕获 ,抛出是raise 52 # class nameTooLongError(Exception):#要继承Exception这个类 53 # err = 'name.long' 54 # print('nameTooLongError') 55 # def methFun(self): 56 # pass 57 # #自定义异常类 -过短异常,继承 58 # class nameTooshortError(Exception): 59 # print('nameTooshortError') 60 # 61 # def inputName(): 62 # name = input('请输入名字:') 63 # if len(name) > 10: 64 # raise nameTooLongError #自定义的异常要自行抛出 65 # elif len(name) < 10: 66 # raise nameTooshortError 67 # try: 68 # inputName() 69 # except nameTooshortError: 70 # print("您的名字过短") 71 # except nameTooLongError: 72 # print("您的名字过长") 73 74 #断言 75 tel = input('请输入手机号:') 76 assert len(tel) == 11,'手机号位数错误' 77 print('位数正确')