• day 24 异常处理,网络编程理论


    一、异常

    1、异常就是程序运行时发生的错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止)

    错误分两种,语法错误,逻辑错误

    一个异常分为三部分:

    1、异常的追踪信息2、异常的类型3、异常的值

    2、异常的种类

    常用异常

    attributerError 试图访问一个对象没有的树形比如foo.x,但foo没有属性x

    IOError 输入、输出异常,基本上是无法打开文件

    importError无法引入模块或包;基本上是路径问题名称错误

    IndexError 下标索引超出序列边界,比如当X只有三个元素,却试图访问X[5]

    KeyError试图访问字典里不存在的键

    NameError使用一个还未被赋予对象的变量

    TypeError传入对象类型与要求的不符合

    valueError传入一个调用者不期望的值,即使值的类型是正确的

     

    语法:

    单分支

    try:

      print('start.....')

      x=1

      y

      l=[]

      l=[3]

      print('end....')

    except NameError:

      print('变量名没有定义')

    多分支

    try    print('start.....')

        x=1
    # y
    l=[]
    l[3]
    d={'a':1}
    d['b']
    print('end....')
    except NameError:
    print('变量名没有定义')
    except KeyError:
    print('字典的key不存在')
    except IndexError:
    print('索引超出列表的范围')

    多种异常采用同一段逻辑处理
    try:
     print('start.....')

      x=1

      y

      l=[]

      l=[3]

      print('end....')

    except(NameError,KeyError,IndexError):

      print('变量名或者字典的key或者列表的索引有问题')

    万能异常

     

    try:
    print('start.....')
    x=1
    # y
    l=[]
    # l[3]
    d={'a':1}
    # d['b']
    import os
    os.aaa
    print('end....')
    except Exception:
    print('万能异常---》')
    获取异常的值
    try:
    print('start.....')
    x=1
    y
    l=[]
    l[3]
    d={'a':1}
    d['b']
    import os
    os.aaa
    print('end....')
    except Exception as e:
    print('万能异常---》',e)


    try....else....
    else:不能单独使用,必须与except 连用,意思是:else的子代码地块会在被检测的代码没有出现过任何异常的情况下执行

     

     

    try:
    print('start.....')
    x=1
    y
    l=[]
    l[3]
    d={'a':1}
    d['b']
    import os
    os.aaa
    print('end....')
    except NameError as e:
    print('NameError: ',e)

    except KeyError as e:
    print('KeyError: ',e)

    except Exception as e:
    print('万能异常---》',e)

    else:
    print('在被检测的代码块没有出现任何异常的情况下执行')
    print('other.....')


    try...finally....
    try:
    print('start.....')
    x=1
    # y
    l=[]
    l[3]
    d={'a':1}
    d['b']
    import os
    os.aaa
    print('end....')
    except NameError as e:
    print('NameError: ',e)

    except KeyError as e:
    print('KeyError: ',e)

    except Exception as e:
    print('万能异常---》',e)

    else:
    print('在被检测的代码块没有出现任何异常的情况下执行')
    finally:
    print('无论有没有异常发生,都会执行')
    print('other.....')

    finally的子代码块中通常放回收系统资源的代码
    try:
      f=open('a.txt',mode='w',encoding='utf-8')
      f.readline()
    finally:
      f.close()


    主动触发异常
    raise TypeError('类型错误')
    class People:
      def __init__(self,name):
        if not isinstance(name,str):
          raise TypeError('%s必须是str类型'%name)
         self.name=name

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


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

    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
    2、什么是网络?
      1、物理连接介质
      2、互联网协议
        互联网协议就是一堆标准
        比喻:互联网协议就是计算机界的英语


    数据传输就是先包一层源和目的端口,再包一层源IP和目标IP,再包一层源MAC和目标MAC,通过网络接口层和对端PC通信,对端再一层一层解包最后得到相应的数据,先通过IP到局域再通过局域找到MAC再通过端口找到客户端对应的用户软件

    2.3.1 物理层

    物理层由来:上面提到,孤立的计算机之间要想一起玩,就必须接入internet,言外之意就是计算机之间必须完成组网

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

    2.3.2 数据链路层

    数据链路层由来:单纯的电信号0和1没有任何意义,必须规定电信号多少位一组,每组什么意思

    数据链路层的功能:定义了电信号的分组方式

    以太网协议:

    早期的时候各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议ethernet

    ethernet规定

    • 一组电信号构成一个数据包,叫做‘帧’
    • 每一数据帧分成:报头head和数据data两部分
           head                        data                             

     

    head包含:(固定18个字节)

    • 发送者/源地址,6个字节
    • 接收者/目标地址,6个字节
    • 数据类型,6个字节

    data包含:(最短46字节,最长1500字节)

    • 数据包的具体内容

    head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送


        




     

  • 相关阅读:
    《VR入门系列教程》之21---使用Unity开发GearVR应用
    《VR入门系列教程》之20---使用Oculus移动端SDK
    《VR入门系列教程》之19---GearVR开发初识
    《VR入门系列教程》之18---Oculus代码剖析
    《VR入门系列教程》之17---发布第一个应用
    《VR入门系列教程》之16---第一个OculusVR应用
    阿里巴巴开发手册提取信息
    国富论
    富通天下(W 笔试)
    富通天下(T 面试)
  • 原文地址:https://www.cnblogs.com/lg04551/p/8874871.html
Copyright © 2020-2023  润新知