本周内容:
day01
01 异常处理
02 socket编程
网络基础:OSI七层协议
day02
01 网络基础
02 socket编程
基于tcp协议的套接字编程
day03
01 粘包问题
02 基于udp协议的套接字通信
day04
01 sockserver编写支持并发的套接字
day05:
01猴子补丁
02垃圾回收机制
03内置函数
04单例模式
05元类
“”"
1、什么是异常
异常是错误发生的信号,一旦程序出错就会产生一个异常
如果该异常没有被处理,该异常就会被抛出来,程序的运行随即终止
异常是由三部分组成
1、具体哪一行代码抛出的异常
2、异常的种类
NameError:变量名没有定义过
IndexError:索引不存在
l=[11,22]
l[100]
KeyError
d={"k1":11}
d["k2"]
AttributeError:对象属性不存在
对象.属性
ValueError:
int("asdf")
TypeError:
"asdf"+1111
ZeroDivisionError
1/0
3、异常的内容信息
2、为何要处理异常
为了增强程序的健壮性
3、如何处理异常
1、针对语法的错误:应该在程序运行前立即改正
2、针对逻辑错误:
2.1 如果逻辑错误发生的条件是可以预知的,应该if判断解决,预防异常
age = input('>>: ').strip()
if age.isdigit():
age=int(age)
if age > 18:
print('too big')
elif age < 18:
print('too small')
else:
print("got it")
else:
print('必须输入数字')
2.2 如果逻辑错误发生的条件是不可预知的,那么异常一个会发生,考虑到程序的健壮性
我们应该处理异常,做好补救措施
try:
代码块
except 异常的类型:
发生异常后要执行的代码
例1
try:
print("====>111")
print("====>222")
xxx
print("====>333")
except AttributeError as e:
print(e)
print('====>4')
例2
try:
print("====>111")
print("====>222")
xxx
print("====>333")
except NameError as e:
print(e)
print('====>4')
例3
try:
print("====>111")
print("====>222")
# xxx
# l=[]
# l[0]
dic={}
dic["k1"]
print("====>333")
except (NameError,IndexError) as e:
print("=---->",e)
except KeyError as e:
print(e)
print('====>4')
例4
try:
print("====>111")
print("====>222")
xxx=111
# l=[]
# l[0]
dic={}
# dic["k1"]
print("====>333")
except (NameError,IndexError) as e:
print("=---->",e)
except KeyError as e:
print(e)
finally:
print("一定会运行")
print('====>4')
# print(xxx)
例4
try:
print("====>111")
print("====>222")
finally:
print("一定会运行")
print('====>4')
print(xxx)
例5
try:
print("====>111")
print("====>222")
# xxx
l=[]
# l[0]
dic={}
dic["k1"]
print("====>333")
except Exception as e:
print("万能异常",e)
print('====>4')
例6
print('==>11')
raise NameError("变量名未定义")
print('==>222')
class Animal:
def speak(self):
raise BaseException("小垃圾必须实现speak方法来覆盖")
def run(self):
raise BaseException("小垃圾必须实现run方法来覆盖")
class Dog(Animal):
pass
class Pig(Animal):
pass
d=Dog()
p=Pig()
d.speak()
d.run()
p.speak()
d.run()
例7
class Interface(BaseException):
def __init__(self, msg, x, y, z):
self.msg = msg
self.x = x
self.y = y
self.z = z
def __str__(self):
return "<%s:%s:%s:%s>" % (self.msg,self.x,self.y,self.z)
raise Interface("接口异常", 11, 22, 33)
例8:
print("====1")
print("====2")
print("====3")
salaries=[1.1,2.2]
# if len(salaries) != 3:
# raise NameError
assert len(salaries) == 3
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
"""
1、什么是socket
网络基础=》socket
2、为何要学习socket编程:
基于socket开发一个C/S或者B/S结构的软件
Client---------网络------------Server
Browser--------网络------------Server
3、如何基于socket编程
网络:https://www.cnblogs.com/linhaifeng/articles/5937962.html
网络是什么=底层的物理连接介质+互联网通信协议
OSI七层协议
网络存在的意义=》通信
4、OSI七层协议
"""