python脚本运行时网络异常_Python——网络编程(一)异常处理与网络协议

#异常处理

什么是异常?:在程序运行时,python解释器检测到错误发出的信号

常用异常:

AttributeError: 试图访问一个对象不存在的属性

IOError: 输入/输出异常;基本是无法打开文件

ImportError: 无法导入模块或包,基本是路径问题或者名称错误

IdentationError: 语法错误的子类,代码没正确对齐

IndexError: 下标索引超出边界

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

KeyboardInterrupt: 终端中使用 Ctrl + C 终止程序时触发

NameError: 使用还没被赋予对象的变量(调用未定义的变量)

SyntaxError: python代码非法,也就是语法错误

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

UnboundLocalError: 试图访问一个还未被设置的局部变量,基本上是由于另一个同名的全局变量,导致你以为在访问它

ValueError: 传入一个调用者不期望的值,如int('abc')

什么是异常处理?:

编写特定代码,专门用来捕捉这个异常;捕捉成功后进行其他逻辑;目的是不使程序崩溃

为什么要进行异常处理?:

python解释去执行程序时,只要检测到一个错误,触发异常,在异常未被处理的情况下程序就会被终止。

为了程序能接着运行别的逻辑而使用。

如何进行异常处理?:

首先要知道,异常是由错误引发的,语法上的错误跟异常处理无关,必须在程序运行前就修正

之前常常用if来进行异常处理,现在换一种新的方式:

python为每一种异常都归类并制定类型,然后提供一种特定语法结构来进行异常处理

基本语法:

1 try:2 被检测的代码块3 except:4 try中一旦检测到异常,就执行这个位置的逻辑

小例子:

1 try:2 value = input('>>')3 int(value)4 except ValueError as i: #这里的i为异常的值

5 print(i)6 print('程序继续运行')

多分支:对多个异常进行处理

注意:一旦接收到异常,则跳转到except那进行接下来的逻辑,不会继续运行try中的逻辑

1 try:2 value = input('>>')3 a =int(value)4 b = list(a)[1000]5 print('---------') #不会执行这步6 except ValueError as i: #多分支

7 print(i)8 exceptTypeError as k:9 try:10 print(list(str(a))[1000])11 exceptIndexError:12 print('超出索引范围')

万能异常Exception:能接收所有异常

1 try:2 value = input('>>')3 a =int(value)4 except Exception as i: #万能异常

5 print(i)

当需要对不同异常进行不同处理时,可用多分支(多分支最后也可加上一个万能异常)

当只需要对所有异常都进行一种处理时,可用万能异常

异常的其他结构:

1 try:2 value = input('>>')3 a =int(value)4 except Exception as i: #万能异常

5 print(i)6 else:7 print('try内代码块没有异常时执行')8 finally:9 print('无论try内代码块有无异常都执行,通常是进行清理工作(比如关闭文件)')10 print('end')

主动触发异常:raise

1 try:2 raise TypeError('类型错误')3 exceptException as i:4 print(i)

自定义异常:

1 class MyException(BaseException): #自定义的异常需要继承BaseException

2 def __init__(self, msg):3 self.msg =msg4

5 try:6 raise MyException('类型错误')7 except MyException as i: #注意自定义的异常不能用万能异常接收

8 print(i)

断言:

1 deffunc():2 return 1

3 value =func()4 assert value == 2

5 #其实就相当于下面,只是省了一行代码

6 if value != 2:7 raise AssertionError

总结:

使用try ... except的好处

1、把错误处理和真正的工作分离开

2、代码更易组织、清晰

3、更安全,程序不容易崩溃

尽量少用:

能修正的逻辑错误尽量修正,只有当错误无法预知时才用try...except

客户端/服务器架构:C/S架构(client/service)

包括:

硬件C/S架构(如打印机)

软件C/S架构(如web)

CS信息传输流程

1、客户端软件产生数据,存放于客户端软件的内存中,然后调用接口将自己内存中的数据发送/拷贝给操作系统内存

2、客户端操作系统收到数据后,按照客户端软件指定的规则(即协议)、调用网卡发送数据

3、网络传输数据

4、服务端软件调用系统接口,想要将数据从操作系统内存拷贝到自己的内存中

5、服务端操作系统收到4的指令后,使用与客户端相同的规则(即协议)从网卡接收到数据,然后拷贝给服务端软件

网络模型

计算机与计算机之间要有统一的连接标准才能够进行通信,这个标准称之为互联网协议,而网络就是物理链接介质+互联网协议。

按照功能不同,人们将互联网协议分为 osi七层或tcp/ip五层或tcp/ip四层

详情见https://www.cnblogs.com/linhaifeng/articles/5937962.html#_label2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值