异常处理:
什么是异常处理:
程序在运行过程中出现了不可预知的错误,并且该错误没有对应的处理机制,那么就会以异常的形式表现出来,造成的影响就是整个程序无法再正常运行
异常的结构:
异常的类型、异常的信息、异常的位置
异常的种类:
1、语法错误
是你程序能立刻解决的,这种错误是不能被容忍的,语法上的错误发现之后应该立刻解决
2、逻辑错误
逻辑错误无法一眼就看出来,因为是针对逻辑上的错误,可以采用异常处理机制进行捕获
常见的报错类型:
NAMEERROR 名字错误
SynataxERROR 语法错误
KeyERROR 键不存在
ValueError 值错误
IndexError 索引错误
如何避免:
异常处理:
在你认为可能会出现bug的代码块上方try一下,注意try内部的代码块要越少越好。
try:#可能出现错误的代码块
pass
except 出错的类型 as e: #将报错的信息赋值给变量e
pass
#出错之后的处理机制
UDP通信:数据报协议(自带报头), 没有双向通道,通信类似于发短信
1、udp协议客户端允许发空
2、udp协议不会粘包
3、udp协议服务端不存在的情况下,客户端照样不会报错
4、udp协议支持并发
并发:看起来像是同时运行
并行:真正意义上的同时运行
socketserver:
UDP的服务端:
importsocketserverclassMyServer(socketserver.BaseRequestHandler):defhandle(self):#print('来啦 老弟')
whileTrue:
data,sock=self.requestprint(self.client_address) #客户端地址
print(data.decode('utf-8'))
sock.sendto(data.upper(),self.client_address)if __name__ == '__main__':"""只要有客户端连接 会自动交给自定义类中的handle方法去处理"""server= socketserver.ThreadingUDPServer(('127.0.0.1',8080),MyServer) #创建一个基于TCP的对象
server.serve_forever() #启动该服务对象
UDP的客户端:
importsocketimporttime
client= socket.socket(type=socket.SOCK_DGRAM)
server_address= ('127.0.0.1',8080)whileTrue:
client.sendto(b'hello',server_address)
data,addr= client.recvfrom(1024)print(data.decode('utf-8'),addr)
time.sleep(1)
TCP的服务端:
importsocketserverclassMyServer(socketserver.BaseRequestHandler):defhandle(self):#print('来啦 老弟')
whileTrue:
data= self.request.recv(1024)print(self.client_address) #客户端地址
print(data.decode('utf-8'))
self.request.send(data.upper())if __name__ == '__main__':"""只要有客户端连接 会自动交给自定义类中的handle方法去处理"""server= socketserver.ThreadingTCPServer(('127.0.0.1',8080),MyServer) #创建一个基于TCP的对象
server.serve_forever() #启动该服务对象
TCP的服务端:
importsocket
client=socket.socket()
client.connect(('127.0.0.1',8080))whileTrue:
client.send(b'hello')
data= client.recv(1024)print(data.decode('utf-8'))