异常处理
把将会会产生的错误,提早在代码里开展捕获(检测)
try :
code
except Exception:
错误后要实行的代码
下边是普遍的出现异常:
attributeError 尝试访问一个目标沒有的属性
Nameerror 访问一个沒有自变量
Valueerror 值种类不配对
importError 导进不会有的控制模块
indentationError 缩近错误 --> 强种类错误,要是犯这类错误程序流程便会奔溃 ,这类错误是抓不上的
syntaxError 英语的语法错误 --> 跟上面一样
indexError 字符数据库索引超过界限错误
Keyboardinterrupt ctrl c 没法撤出程序流程
EOFError ctrl d 没法撤出程序流程
Typeerror 种类不符
Unboundlocalerror 尝试访问一个还未被设定的局部变量,大部分是因为另有一个同名的的静态变量,造成你觉得已经访问它
valueError 传到一个调用者不期待的值 ,立即值的种类是恰当的
# -*- coding:utf-8 -*- while True: num1 = input("num1>>").strip() num2 = input("num2>>").strip() try: num1 = int(num1) num2 = int(num2) result = num1 num2 print(result,name) # except Exception as err: # print("info is error. check") # print(err) except NameError as e: print(e) except ValueError as e: print(e)
Try ..else..finally
Else 不开启出现异常实行里面的代码
Finally 不管开启出现异常是否都是实行里面的代码
自定义异常
# -*- coding:utf-8 -*- #自定义异常 class YoutubeConnectionError(BaseException): def __init__(self,msg): self.msg = msg def __str__(self): return self.msg name = "Alex" d = [1,2,3] while True: num1 = input("num1>>").strip() num2 = input("num2>>").strip() try: num1 = int(num1) num2 = int(num2) result = num1 num2 print(result) #raise ImportError('123') raise YoutubeConnectionError('依据法律法规不可以科学上网')#积极开启出现异常 #d[3] # except Exception as err: # print("info is error. check") # print(err)笔 except YoutubeConnectionError as e: print(e) except NameError as e: print(e) except ValueError as e: print(e) except Exception as e: print('产生错误') else: print("Normal!!!,不产生出现异常走这儿") finally: print('any不管错误是否,都是走这儿')
Assert 肯定的主要用途
Assert英语的语法用以分辨代码是不是合乎实行预估
Assert 1+1=2
Assert 1 2 = 2
它一般用于做单元测试卷,启用上百个托词 ,看是都是发现异常
def my_interface(name,age,sorce): assert type(name) is str assert type(age) is int assert type(sorce) is float my_interface("Alex",22,66.3)