#异常与错误
# 什么是异常?
# 异常就是程序运行时发生错误的信号,在程序出现错误时,则会产生异常,若没有程序处理,则会抛出异常
# 导致程序在异常语句处崩溃终止
# 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

Pyhton学习——Day29的更多相关文章

  1. Pyhton学习——Day26

    #多态:多态指的是一类事物有多种形态# import abc# class Animal(metaclass = abc.ABCMeta):# 同一类事物:动物# @abc.abstractclass ...

  2. pyhton 学习

    官方学习文档 https://docs.python.org/3/tutorial/

  3. 20190320_head first pyhton学习笔记之构建发布

    1.把代码nester.py放入文件夹nester中,在文件夹中再新建一个setup.py文件,文件内容如下: from distutils.core import setup setup( name ...

  4. Pyhton学习——Day2

    Python开发IDE(工具)Pycharm.eclipse1.循环while 条件 #循环体 #条件为真则执行 #条件为假则执行break用于退出所有循环continue用于退出当前循环 2.Pyc ...

  5. Pyhton学习——Day28

    #上下文协议:文件操作时使用with执行# with open('a.txt','w',encoding='utf-8') as f1:# with语句,为了让一个对象兼容with语句,必须在这个对象 ...

  6. Pyhton学习——Day27

    # hasattr(obj,'name')-->obj.name# getattr(obj,'name',default = 'xxx')--->obj.name# setattr(obj ...

  7. Pyhton学习——Day25

    #面向对象的几个方法#1.静态方法@staticmethod,不能访问类属性,也不能访问实例属性,只是类的工具包#2.类方法:@classmethod,在函数属性前加上类方法,显示为(cls)代表类, ...

  8. Pyhton学习——Day24

    # #面向对象设计:# def dog(name,gender,type):# def jiao(dog):# print('One Dog[%s],wfwfwf'%dog['name'])# def ...

  9. Pyhton学习——Day23

    #re模块方法:findall search#findall:返回所有满足匹配条件的数值,放在列表里#search : #函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象 ...

随机推荐

  1. pyhton的selenium的搭建

    一.好记性不如烂笔头,小伙伴们.让我们做下笔记吧 1.首先要安装pycharm  激活注册码地址:http://idea.lanyus.com/ 2.下载python3.6   python下载地址: ...

  2. jmeter搭建

    jdk 1.8的地址  链接:https://pan.baidu.com/s/1eEyYbzo1Tfbvbmf_vN2yUA 密码:6dxi 1.安装JDK 选择安装目录 安装过程中会出现两次 安装提 ...

  3. Python笔记23------Python统计列表中的重复项出现的次数的方法

    https://www.cnblogs.com/hester/p/6197449.html

  4. windows系统下jenkins环境搭建与基本使用

    一. windows 系统下搭建jenkins环境 1.1 jenkins环境搭建和构建job流程图 1.2 安装jdk JDK下载地址:  http://www.oracle.com/technet ...

  5. UVA1586 - Molar mass(紫书习题3.2)

    HJL是一个从不讽刺人的品学兼优的好孩子,她最近沉迷学习化学而不能自拔.然而计算一个分子的相对分子质量使她烦不胜烦,因此她决定请你写一个程序来帮助她计算这种麻烦的事情. 已知: ①C代表的碳元素的相对 ...

  6. Redis 报错:MISCONF Redis is configured to save RDB snapshots

    MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Com ...

  7. 端到端图片识别 Python实现 Tensorflow

    基于python语言的tensorflow的‘端到端’的字符型验证码识别 1   Abstract 验证码(CAPTCHA)的诞生本身是为了自动区分 自然人 和 机器人 的一套公开方法, 但是近几年的 ...

  8. 【AIM Tech Round 5 (rated, Div. 1 + Div. 2) B】Unnatural Conditions

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 让a+b的和为100000000...0这样的形式就好了 这样s(a+b)=1<=m就肯定成立了(m>=1) 然后至于s ...

  9. C#中的string驻留池

    刚开始学习C#的时候,就听说CLR对于String类有一种特别的内存管理机制:有时候,明明声明了两个String类的对象,但是他们偏偏却指向同一个实例.如下: String s1 = "He ...

  10. git常规使用的命令

    注: xxxx代表你的分支名称   1:本地新建一个分支,与远程分支关联: git branch --set-upstream-to origin/xxxx xxxx   2:创建本地分支: git ...