今日内容
01 异常处理
02 socket编程
网络基础:OSI七层协议
# 异常处理
'''
"""
1、什么是异常
异常是错误发生的信号,一旦程序出错就会产生一个异常
如果该异常没有被处理,该异常就会被抛出来,程序的运行随即终止
异常是由三部分组成
1、具体哪一行代码抛出的异常
2、异常的种类
NameError:变量名没有定义过
IndexError:索引不存在
AttributeError:对象属性不存在
ValueError:值错误
TypeError:类型错误
ZeroDivisionError:零除法错误
1/0
......
3、异常的内容信息
2、为何要处理异常
为了增强程序的健壮性
3、如何处理异常
1、针对语法的错误:应该在程序运行前立即改正
2、针对逻辑错误:
2.1 如果逻辑错误发生的条件是可以预知的,应该if判断解决,预防异常
2.2 如果逻辑错误发生的条件是不可预知的,那么异常一定会发生,考虑到程序的健壮性
我们应该处理异常,做好补救措施
try:
代码块
except 异常的类型:
发生异常后要执行的代码
"""
# 1 异常类只能用来处理指定的异常情况,如果非指定异常则无法处理。
s1 = 'hello'
e = 111
try:
int(s1)
except IndexError as e: # 未捕获到异常,程序直接报错
print(e)
# 2 多分支
s1 = 'hello'
try:
int(s1)
except IndexError as e:
print(e)
except KeyError as e:
print(e)
except ValueError as e:
print(e)
try:
int(s1)
except (IndexError, KeyError, ValueError) as e:
print(e)
# 3 万能异常Exception
s1 = 'hello'
try:
int(s1)
except Exception as e:
print(e)
# 4 多分支异常与万能异常
# 4.1 无论出现什么异常,统一丢弃,或者使用同一段代码逻辑去处理他们,只需一个Exception就足够了。
# 4.2 对于不同的异常需要定制不同的处理逻辑,那就需要用到多分支了。
# 5 也可以在多分支后来一个Exception
s1 = 'hello'
try:
int(s1)
except IndexError as e:
print(e)
except KeyError as e:
print(e)
except ValueError as e:
print(e)
except Exception as e:
print(e)
# 6 异常的其他机构
s1 = 'hello'
try:
int(s1)
except IndexError as e:
print(e)
except KeyError as e:
print(e)
except ValueError as e:
print(e)
# except Exception as e:
# print(e)
else:
print('try内代码块没有异常则执行我')
finally: # finally 无论异常与否,都会执行,通常用来进行清理工作
print('无论异常与否,都会执行该模块,通常是进行清理工作')
# 7 主动触发异常
try:
raise TypeError('类型错误')
except Exception as e:
print(e)
# print('==>11')
# raise NameError("变量名未定义")
# print('==>222')
# 8 自定义异常
# 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)
# 9 断言:assert 条件
print("====1")
print("====2")
print("====3")
salaries = [1.1, 2.2]
# if len(salaries) != 3:
# raise NameError
assert len(salaries) == 3 # 判断条件是否正确,若正确,则继续执行后续代码,否则自动抛出异常
print(salaries[2])
# 10 总结try..except
# 1:把错误处理和真正的工作分开来
# 2:代码更易组织,更清晰,复杂的工作任务更容易实现;
# 3:毫无疑问,更安全了,不至于由于一些小的疏忽而使程序意外崩溃了;
'''
# 网络基础
"""
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七层协议
应用层{
应用层
表示层
会话层
}
传输层
网络层
数据链路层
物理层
"""