异常与网络编程的四个地址

异常

错误发生的信号

程序一旦出错,如果程序中还没有相应的处理机制,

那么该错误就会产生一个异常抛出来,程序的运行也会随之终止

一个异常的三个部分:

1.异常的追踪信息

2.异常的类型

3.异常的值

异常与网络编程的四个地址

异常也分很多种,我们举两个例子来说

#异常分类
# 语法异常(这异常在程序执行前就改正)
try:
    x
except NameError:
    print('语法异常')
# 逻辑异常
try:
    l=[]
    l[1]
except IndexError:
    print('逻辑问题')

Exception(万能异常)

# 万能异常
try:
x=0
y
print('====>')
l=[]
l[1]
dic={'a':0}
dic['b']
except Exception as e:
print('万能异常123',e)
# 结果 万能异常123 name 'y' is not defined

try:
x=0
print('====>')
l=[]
l[1]
dic={'a':0}
dic['b']
except Exception as e:
print('万能异常123',e)
#结果 ====>
# 万能异常123 list index out of range

try...else...(else不能单独使用,必须与except连用)

在被检测的代码块没有出现任何异常的情况下执行

#try...else...
try:
    print('我没有异常')
except Exception:
    print('万能异常')
else:
    print('海草,海草,海草 浪花里舞蹈')

try...finally..

无论有没有异常发生,都会执行

#try..finally
try:
    x = 0
    print('====>')
    l = []
    l[1]
    dic = {'a': 0}
    dic['b']
except Exception:
    print('万能异常123')
finally:
    print('大大大,大哥别杀我')

主动触发异常

raise

# raise NameError
class Peopel:
    def __init__(self,name):
        if not isinstance(name,str):
            raise TimeoutError('%s必须是str类型'%name)
        self.name=name
p=Peopel(123)

断言

# 断言
print('part1........')
stus=['egon','alex','wxx','lxx']
# stus=[]


if len(stus) <= 0:
    raise TypeError
assert len(stus) > 0

print('part2.........')
print('part2.........')
print('part2.........')
print('part2.........')
print('part2.........')
print('part2.........')

自定义异常

# 自定义异常
class RegisterError(BaseException):
    def __init__(self,msg,user):
        self.msg=msg
        self.user=user

    def __str__(self):
        return '<%s:%s>' %(self.user,self.msg)

raise RegisterError('注册失败','teacher')

网络编程

1.C/s,B/s架构

client<---->server

browser<---->server

学习socket编程就是要编写一个客户端软件和服务端软件

然后实现服务端与客户端基于网络通信

2.什么是网络?

1.物理连接介质

2.互联网协议

互联网协议就是

osi七层协议

异常与网络编程的四个地址

物理层功能:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0

数据链路层:以太网

  • 一组电信号构成一个数据包,叫做‘帧’
  • 每一数据帧分成:报头head和数据data两部分
  • mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址

 网络层 ip地址

传输层 端口

用户层 软件

我就可以通过mac+lp+端口,就可以定位世界上任意一个独一无二的软件