• python学习第31天之异常处理、网络编程part1


    一,异常处理

    1. 什么是异常处理
    异常是错误发生的信号,一旦程序出错就会产生一个异常,如果该异常
    没有被应用程序处理,那么该异常就会抛出来,程序的执行也随之终止

    异常包含三个部分:
    (1). traceback异常的追踪信息
    (2). 异常的类型
    (3). 异常的信息

    2. 为何要异常处理

    避免程序因为异常而崩溃,所以在应用程序中应该对异常进行处理,从而增强程序的健壮性

    3. 如何异常处理

    错误分为两大类:
    (1). 语法上的错误:在程序运行前就应该立即修正
    (2). 逻辑上的错误

    try:
        代码1
        代码2
        代码3
        ......
    except NameError:
        当抛出的异常是NameError时执行的子代码块
    except ....:
        pass
    except ...:
        pass
    else:
        pass
    finally:
        pass

    1、常见的逻辑错误导致的异常

     print('adsfsadf'
    
    # age=input('>>: ').strip()
    # print(age > 10) #TypeError
    
    # for i in 10: #TypeError
    #     pass
    
    # import os
    # os.xxx #AttributeError
    
    # 1 / 0 #ZeroDivisionError:
    
    # print('=====1')
    # print('=====2')
    # print('=====3')
    # l=[1,2,3]
    # l[1000] #IndexError
    # print('=====4')
    # d={'x':1,'y':2}
    # d['z'] #KeyError
    # print('=====5')

    2. 异常处理

    (1)异常处理的单分支

    try:
    #     print('=====1')
    #     print('=====2')
    #     print('=====3')
    #     d = {'x': 1, 'y': 2}
    #     d['z']  # KeyError
    #     print('=====4')
    #     l = [1, 2, 3]
    #     l[1000]  # IndexError
    #     print('=====5')
    # except IndexError:
    #     print('IndexError')
    #
    # print('other code')

    (2)异常处理的多分支

    try:
    #     print('=====1')
    #     print('=====2')
    #     print('=====3')
    #     d = {'x': 1, 'y': 2}
    #     d['z']  # KeyError
    #     print('=====4')
    #     l = [1, 2, 3]
    #     l[1000]  # IndexError
    #     print('=====5')
    # except KeyError as e:
    #     print('KeyError',e)
    # except IndexError as e:
    #     print('IndexError',e)
    #
    #
    # print('other code')
    # try:
    #     print('=====1')
    #     print('=====2')
    #     print('=====3')
    #     d = {'x': 1, 'y': 2}
    #     # d['z']  # KeyError
    #     print('=====4')
    #     l = [1, 2, 3]
    #     l[1000]  # IndexError
    #     print('=====5')
    # except (KeyError,IndexError) as e:                     写在一起,都能匹配,任何一个匹配到就抛出
    #     print(e)
    # print('other code')

    变量e专门接受异常的值

    #1、万能异常类型Exception:可以匹配任意类型的异常

    # try:
    #     print('=====1')
    #     print('=====2')
    #     print('=====3')
    #     d = {'x': 1, 'y': 2}
    #     # d['z']  # KeyError
    #     # xxx
    #     print('=====4')
    #     l = [1, 2, 3]
    #     l[1000]  # IndexError
    #     print('=====5')
    # except IndexError as e:
    #     print('IndexError:', e)
    # except KeyError as e:
    #     print('KeyError:', e)
    # except Exception as e:
    #     print('Exception:',e)
    #
    # print('other code')

    #2  try... else...的用法

    else必须放到后面,else的子代码块会在被检测的代码没有异常的情况下执行

    # try:
    # print('=====1')
    # print('=====2')
    # print('=====3')
    # d = {'x': 1, 'y': 2}
    # # d['z'] # KeyError
    # # xxx
    # print('=====4')
    # l = [1, 2, 3]
    # # l[1000] # IndexError
    # print('=====5')
    # except IndexError as e:
    # print('IndexError:', e)
    # except KeyError as e:
    # print('KeyError:', e)
    # except Exception as e:
    # print('Exception:',e)
    # else:
    # print('else必须放到后面,else的子代码块会在被检测的代码没有异常的情况下执行')
    # # print('other code')

    #3、try... finally...的作用

    无论被检测的代码有没有异常都会执行',常用于回收资源的操作

    3、自定义异常:

     (1)主动触发异常:raise TypeError ('类型错误’),强行异常

    通常用于资源被无限占用的时候,主动抛出异常。自定义的语法

     print('===>1')
    # print('===>2')
    # raise TypeError('类型错误')
    # print('===>3')
    # class People:
    #     def __init__(self,name,age):
    #         self.__name=name
    #         self.__age=age
    #
    #     def tell_info(self):
    #         print(self.__name,self.__age)
    #
    #     def set_info(self,name,age):
    #         if not isinstance(name,str):
    #             raise TypeError('名字必须是str类型')
    #         if not isinstance(age,int):
    #             raise TypeError('年龄必须是int类型')
    #         self.__name=name
    #         self.__age=age
    #
    # obj=People('egon',18)      
    # # print(obj.__dict__)
    # # obj.tell_info()       
    #
    # obj.set_info(33,‘33’)   比如我们传不符合要求的值就会报错
    # obj.tell_info()              

    (2)

    # class MyException(BaseException):
    #     def __init__(self,msg):
    #         super().__init__()
    #         self.msg=msg
    #
    #     def __str__(self):          
    #         return '<%s>' %self.msg   专门在打印时候把异常值显示出来
    # # raise MyException('我自定义的异常') 打印对象

    4、断言

    print('上半部分,生产数据')            
    l=[1,2,3,4]
    
    # if len(l) != 5:
    #     raise TypeError('列表的长度必须为5')
    assert len(l) == 5
    
    print('下半部分,处理数据')

    if len(l)=assert len(l)

    二、网络编程part1

    1、应用软件的架构
    (1).C/S           客户端————服务端
    client ==== server

    (2).B/S                        
    browser === server

    在不同的计算机上 一个安装客户端 另一安装服务端 通过网络来通讯

    什么是网络通讯?

    要完成通讯必须具备的条件
    (1).物理连接介质 (网线,WIFI,光纤)
    (2).必须遵循相同的标准

    在计算机网络中同样需要具备这两个条件
    作为应用软件开发者 不需要关心第一步 重点是通讯的标准(通讯的协议)

    网络协议:
    open system interconnection
    OSI七层模型。需要掌握五层的

  • 相关阅读:
    冲刺 09
    冲刺08
    个人作业-买书
    冲刺07
    冲刺 06
    软件工程 寻找小水王
    冲刺04
    冲刺 03
    冲刺 02
    冲刺3
  • 原文地址:https://www.cnblogs.com/ye-hui/p/9892573.html
Copyright © 2020-2023  润新知