美文网首页
day28异常处理\套接字编程

day28异常处理\套接字编程

作者: 荭鲤鱼与緑鲤鱼与驴 | 来源:发表于2020-08-10 20:12 被阅读0次

Ⅰ 异常处理
什么是异常
异常是错误发生的信号,一旦程序出错就会产生一个异常
错误又分为两类
语法错误:python语法问题例print( 少一个括号(傻叉问题)(任何程序都不会运行)
逻辑错误:如dlskf,这个变量未定义就被引用
如果该异常没有被处理,该异常就会被抛出来,程序的运行随机终止
异常是有三部分组成的
抛出异常的具体代码行
异常种类
NameErroe:变量未事先定义
IndexError:索引不存在
KeyError:字典取值key不存在
AttributeError:对象属性不存在
异常的内容信息

例一

s1 = 'hello' # 定义个字符串
try: # 添加try异常处理功能
res = int(s1) # 此地代码应该认为是顶级代码
print(res)

异常处理功能结束代码 需要指定异常分类 ValueError

except ValueError as e: # 将异常信息关联指变量e
print(e) # 可以打印e或者进行其他操作

例二

s1 = 'hello'
try:
int(s1)
except IndexError as e: # 取值索引超出
print(e)
except IndentationError as e: # 语法错误
print(e)
except ValueError as e: # 传入的值不正确
print(e)
为何要处理异常
为了增强程序的健壮型

我们常用的if判断就是用来预防异常问题的

age = input('请输入年龄:').strip()
if age > 18: # 这里变量age等于是字符串无法比较
print('猜大了')

age = input('请输入年龄:').strip()
if int(age) > 18: # 我们使用int转换成整型,但是如果用户输入非数字呢
print('猜大了')

所有又增加了判断条件

if age.isdigit(): # 我们判断当输入为数字的时候再进行转换
if int(age) > 18: # 当输入数字的时候这里就可以比较了,还不够完善,如果输入的是带小数的数字呢?
print('猜大了')
如何处理异常
针对语法错误:应该在程序运行前立即改正
针对逻辑错误:
如果逻辑错误发生的条件是可以预知的,应该用if判断解决
如果逻辑错误发生的条件是不可预知的,那么异常一定会发生,考虑到程序的健壮型我们应该处理异常,做好补救措施

例5 万金油

try:
print('===>1')
print('===>2')
print('===>3')
l = []
l[2] # 索引取值超出
dic = {}
dic['k1'] # 字典取值键不存在
print('===>4')
except Exception as e: # 一个代码全部处理,但是无法处理语法错误
print('万能异常处理', e)
print('55555')
主动触发异常
raise NameError('异常信息') #会自动抛出异常#通常用来定制规范(相比提示信息更强势)
例 6 主动触发异常
class Animal:
def speak(self):
raise BaseException('必须实现speak方法来覆盖')

def run(self):
    raise BaseException('必须实现speak方法来覆盖')

class Dog(Animal): # 继承父类 就拥有了父类的共功能
pass

class Pig(Animal): # 继承父类 就拥有了父类的共功能
pass

a = Animal()
d = Dog()
p = Pig()
d.speak() # 但是子类调用会报错,不允许使用
p.run() # 但是子类调用会报错,不允许使用

单纯的这样写,都不可使用了,但我们可以再里面加上判断条件,

当子类来调用时就抛出异常

自定义异常信息
class Interface(BaseException):
def init(self,x,y):
def str(self):
return self
raise Interface('接口异常',11,12)#直接raise类实例化,在类里打印信息

自定义异常类型

class Interface(BaseException):
def init(self, msg, x, y, z):
self.mag = msg
self.x = x
self.y = y
self.z = z

def __str__(self):  # 必须返回值,一般用于类的描述性信息
    return '%s:%s:%s' % (self.mag, self.x, self.y)

obj = Interface('接口异常', 11, 22, 33)
raise obj
断言
if len(x) !=3 :
raise NameError#上方代码条件成立,运行此代码后,下方全部代码不会运行
assert len(x) == 3:
当条件成立才会继续运行后续代码

断言

print('1111111')
print('2222222')
print('3333333')
l = [1, 23, 4,4,3]

if len(l) != 4: # 当列表l的元素不为4的时候,后续的代码不会被执行,
# 再当前位置直接抛出异常
raise NameError

assert len(l) == 5 # 当满足某种条件情况下才会继续运行下方代码

print('444444')
print('444444')
print('444444')
print('444444')
print('444444')
print('444444')

我断言怎么这么样,才会继续执行代码

我断言不怎么这么样,就会继续执行代码

我说了算

套接字编程 #socket编程
什么是socket
网络基础(⭐⭐⭐ ⭐⭐⭐)==>socket
为何要学习scoket编程:
基于socket开发一个C\S或者B\S结构的软件
Client---------网络---------Server
Browser---------网络-------Server
如何基于socket编程
网络是什么=底层的物理链接介质+互联网通信协议
OSI 七层协议
应用层
应用层①
表示层②
会话层③
传输层④
网络层⑤
网络接口层
数据链路层⑥
物理层⑦

相关文章

  • day28异常处理\套接字编程

    Ⅰ 异常处理什么是异常异常是错误发生的信号,一旦程序出错就会产生一个异常错误又分为两类语法错误:python...

  • 2018-09-12 Day18 网络基础

    01.socket编程 socket又叫套接字,就是进行数据通信两端。分为服务端套接字和客户端套接字。套接字编程:...

  • 2018-09-12 day18-网络基础

    总结 一.socket编程 socket又叫套接字,就是进行数据通信两端,分为服务端套接字和客户端套接字套接字编程...

  • day18-网络基础总结

    一、scoket编程: socket又叫套接字,就是进行数据通信两端。分为服务端套接字和客户端套接字套接字编程:自...

  • 18总 网络基础

    1.socket编程: socket又叫套接字,就是进行数据通信两端。分为服务端套接字和客户端套接字套接字编程:自...

  • 2018-09-12 day18网络基础总结

    一socket编程 socket又叫套接字,就是进行数据通信两端。分为服务端套接字和客户端套接字套接字编程:自己写...

  • 2018-09-12-总结

    一、socket编程 socket又叫套接字,就是进行数据通信的两端。分为服务端套接字和客户端套接字套接字编程:自...

  • socket 和 网络I/O模型

    《UNIX 网络编程卷一:套接字联网API》笔记 套接字 套接字编程接口,是在 TCP/IP 协议族中,应用层进入...

  • 2018-09-12 day18网络编程

    1.socket套接字 socket又叫套接字,就是进行数据通信两端。分为服务端套接字和客户端套接字 套接字编程:...

  • 套接字与套接字编程

    什么是套接字(Socket)? 使用端口(Port)可以标识不同的网络进程 端口使用16个bit位表示 4个字节 ...

网友评论

      本文标题:day28异常处理\套接字编程

      本文链接:https://www.haomeiwen.com/subject/wxqsdktx.html