zoukankan      html  css  js  c++  java
  • Pyhton学习——Day29

    #异常与错误
    # 什么是异常?
    # 异常就是程序运行时发生错误的信号,在程序出现错误时,则会产生异常,若没有程序处理,则会抛出异常
    # 导致程序在异常语句处崩溃终止
    # Traceback 追踪异常信号;****Error 异常类;********异常值三部分构成
    # 错误分为语法错误(低级错误)、逻辑错误(编程思维错误)
    # 异常就是错误引发的结果,处理的目的就是让程序在异常后跳转到其他的逻辑执行,不让程序崩溃
    #————————————————————————————————————————————————————#
    # 转载(部分修改):http://www.cnblogs.com/linhaifeng/articles/6232220.html
    # 异常的种类
    # AttributeError 试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x
    # IOError 输入/输出异常;基本上是无法打开文件
    # ImportError 无法引入模块或包;基本上是路径问题或名称错误
    # IndentationError 语法错误(的子类) ;代码没有正确对齐
    # IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
    # KeyError 试图访问字典里不存在的键
    # KeyboardInterrupt Ctrl+C被按下(多用于解释器中)
    # NameError 使用一个还未被赋予对象的变量
    # SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
    # TypeError 传入对象类型与要求的不符合
    # UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
    # 导致你以为正在访问它
    # ValueError 传入一个调用者不期望的值,即使值的类型是正确的
    #————————————————————————————————————————————————————#
    # 1.if判断式的异常处理只能针对某一段代码,对于不同的代码段的相同类型的错误需要写if来进行处理
    # 2.在程序中写与本身程序无关的代码,可读性会及其的差
    # 3.if本身就是可以解决异常的
    # def test():
    # print('test running')
    # choice_dic = {
    # '1':test
    # }
    # while True:
    # choice = input('>>').strip()
    # # if not choice or choice not in choice_dic:
    # # continue #if异常处理机制
    # choice_dic[choice]()
    #————————————————————————————————————————————————————#
    # python为每一种异常定制了一个类型,提供的特定的语法结构用来进行异常处理
    # part1:try except捕捉异常
    #基本语法为
    # try:
    # 被检测的代码块
    # except 异常类型:
    # try中一旦检测到异常,就执行这个位置的逻辑
    # 异常处理有多种方式,处理异常可以用try..except也可以用if
    # try..except可以使用多分支来捕捉不同的异常
    # 万能异常:Exception
    # try:
    # dic = {
    #
    # }
    # dic['key']
    # except Exception as e:
    # print('我是万能异常捕捉器')
    # 什么时候使用万能异常?
    # 1.需求方需要抛出所有的异常,且不做任何处理,或者使用同一段代码去处理,只要用Exception
    # 2.对于不同的多分支,需要定制不同的处理逻辑,那就需要用到多分支了
    #————————————————————————————————————————————————————#
    # 异常的其他结构:
    # else:没有异常时执行语句,有异常就跳过;finally:用于清理工作,都执行,需要放在try代码块执行最后
    # s1 = 'hello'
    # s1 = 1
    # try:
    # int(s1)
    # except ImportWarning as e:
    # print('---->>',e)
    # # except ValueError as e:
    # # print('---->>',e)
    # except Exception as e:
    # print('----->>',e)
    # else:
    # print('else可以判断try代码块中逻辑是否有异常')
    # finally:
    # print('用于清理工作,回收垃圾专用,无论有没有异常都可以做')
    # print('正常执行其他的逻辑')
    # raise 主动抛出异常
    # 自定义异常
    # class DefException(BaseException):
    # def __init__(self,msg):
    # self.msg = msg
    # # raise DefException('自定义异常')
    # print(DefException('自定义异常'))
    # raise TypeError('类型错误')
    # 自定义异常要继承异常的一个基类
    #————————————————————————————————————————————————————#
    # 断言:assert
    # assert 1 == 2
    # 断言一般同于判断两段代码的执行结果是否相等
    # 等同于if判断,相比if更简洁
    #————————————————————————————————————————————————————#
    # 总结:if本身就可以用来处理异常,只不过if的方式代码量大且不易读,try..except的多分支就比如if的多条件判断,
    # if的else就像try的exception,只不过if是针对一种异常的多分支,针对不同段代码的同种错误类型,需要重复写多分支if
    # 而try是针对不同类型异常的多分支,可以把不同段的代码放到一起,检测他们的同种类型错误
    #————————————————————————————————————————————————————#
    #————————————————————————————————————————————————————#
    # Socket编程:
    # 一:客户端/服务器架构(C/S架构)
    # 1.硬件C/S架构(打印机)
    # 2.软件C/S(Web服务)
    # 互联网中到处都是C/S架构,socket就是完成C/S架构的开发
    #————————————————————————————————————————————————————#
    # osi七层
    # 一个完整的计算机系统是由硬件、操作系统、应用软件三种组成,具备这三个条件,一台计算机系统就可以自己和自己玩了
    # 如果要和别人玩,就需要上网了,互联网的核心就是由一堆协议组成,协议就是标准,互联网协议就是计算机世界的英语,
    # 所有的计算机都具备互联网协议,就可以按照统一的标准去收发信息从而完成通信
    # 分工的不同会把互联网协议划分层级
    # 1.学会socket编程,完成C/S架构的软件
    # 2.C/S架构的软件,是基于网络通信进行的
    # 3.网络的核心就是一堆协议,遵循这些标准作出的网络通信的软件
    # 4.从标准开始
    # 数据链路层:Mac标识物理机的物理位置,网络层:IP在标识房间位置,传输层(端口号):Tcp/Ip;Udp协议[192.168.1.1:80]
    # 应用层
    # Socket抽象层在传输层和应用层之间,Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口,在设计模式中,
    # Socket其实是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让
    # Socket去组织数据,以符合指定的协议
    # 即无需深入理解TCP/IP协议,socket已经封装好了,只需要遵循socket的规定去编程
    # pid是用来标识同一台机器上不同进程或者线程的标识【和网络编程无关系】
    #————————————————————————————————————————————————————#
    # 套接字的发展史
    # 同一个进程只能再同一个时间内运行,不能同时运行
    #————————————————————————————————————————————————————#
    # backlog:半连接池,用于暂时存放客户端发来的响应信息
    # accept在建立tcp的三次握手
    # tcp协议可靠性在于服务端不会丢失,因为一定要回复给客户端信息,如果服务端未接受,则会再发送
    # 关闭连接(三次握手)
    # ps:什么是事件驱动?
    # 所谓事件驱动,简单地说就是你点什么按钮(即产生什么事件),电脑执行什么操作(即调用什么函数).当然事件不仅限于用户的操作.
    # 事件驱动的核心自然是事件。从事件角度说,事件驱动程序的基本结构是由一个事件收集器、一个事件发送器和一个事件处理器组成。
    # 事件收集器专门负责收集所有事件,包括来自用户的(如鼠标、键盘事件等)、
    # 来自硬件的(如时钟事件等)和来自软件的(如操作系统、应用程序本身等)。
    # 事件发送器负责将收集器收集到的事件分发到目标对象中。事件处理器做具体的事件响应工作,它往往要到实现阶段才完全确定,
    # 因而需要运用虚函数机制(函数名往往取为类似于HandleMsg的一个名字)。对于框架的使用者来说,
    # 他们唯一能够看到的是事件处理器。这也是他们所关心的内容。
    #————————————————————————————————————————————————————#
    # 四次挥手:谁先发完包,谁先主动申请关闭请求
    # FIN_WAIT1--主动断开
    # FIN_WAIT2--被动断开
    # 三次握手建立的只是没有数据传输的链接,而四次挥手包含数据
    # 大并发情况下,服务端为了节省自身资源,会自动断开链接,服务端先断开链接,所以服务端会先有TIME_WAIT
    Win a contest, win a challenge
  • 相关阅读:
    SQLServer 获取汉字拼音的首字母(大写)函数
    MySQL动态SQL的拼接以及执行、分页
    Jdbc连接sqlserver,mysql,oracle
    MySQL之排序显示行号
    List的分组,求和,过滤操作
    linux 常用命令集合
    redis 基本类型和命令(一)
    ORCLE 创建表空间,用户,赋予角色以及授权
    游标
    【应用服务 App Service】App Service中上传文件/图片(> 2M)后就出现500错误(Maximum request length exceeded).
  • 原文地址:https://www.cnblogs.com/pandaboy1123/p/8529205.html
Copyright © 2011-2022 走看看