day28 异常处理和套接字编程

本周内容:
    day01
        01 异常处理
        02 socket编程
            网络基础:OSI七层协议
    day02
        01 网络基础
        02 socket编程
            基于tcp协议的套接字编程
    day03
        01 粘包问题
        02 基于udp协议的套接字通信
    day04
        01 sockserver编写支持并发的套接字
    day05:
        01猴子补丁
        02垃圾回收机制
        03内置函数
        04单例模式
        05元类

“”"

1、什么是异常

异常是错误发生的信号,一旦程序出错就会产生一个异常
如果该异常没有被处理,该异常就会被抛出来,程序的运行随即终止

异常是由三部分组成
1、具体哪一行代码抛出的异常
2、异常的种类
NameError:变量名没有定义过
IndexError:索引不存在
    l=[11,22]
    l[100]
KeyError
    d={"k1":11}
    d["k2"]

AttributeError:对象属性不存在
    对象.属性

ValueError:
    int("asdf")

TypeError:
    "asdf"+1111

ZeroDivisionError
    1/0
3、异常的内容信息

2、为何要处理异常
为了增强程序的健壮性

3、如何处理异常
1、针对语法的错误:应该在程序运行前立即改正
2、针对逻辑错误:
2.1 如果逻辑错误发生的条件是可以预知的,应该if判断解决,预防异常

  age = input('>>: ').strip()
        if age.isdigit():
            age=int(age)
            if age > 18:
                print('too big')
            elif age < 18:
                print('too small')
            else:
                print("got it")
        else:
            print('必须输入数字')

2.2 如果逻辑错误发生的条件是不可预知的,那么异常一个会发生,考虑到程序的健壮性
我们应该处理异常,做好补救措施

try:
    代码块
except 异常的类型:
    发生异常后要执行的代码

例1

try:
    print("====>111")
    print("====>222")
    xxx
    print("====>333")
except AttributeError as e:
    print(e)

print('====>4')

例2

try:
    print("====>111")
    print("====>222")
    xxx
    print("====>333")
except NameError as e:
    print(e)

print('====>4')

例3

try:
    print("====>111")
    print("====>222")
    # xxx
    # l=[]
    # l[0]
    dic={}
    dic["k1"]
    print("====>333")
except (NameError,IndexError) as e:
    print("=---->",e)
except KeyError as e:
    print(e)

print('====>4')

例4

try:
    print("====>111")
    print("====>222")
    xxx=111
    # l=[]
    # l[0]
    dic={}
    # dic["k1"]
    print("====>333")
except (NameError,IndexError) as e:
    print("=---->",e)
except KeyError as e:
    print(e)
finally:
    print("一定会运行")
print('====>4')
# print(xxx)

例4

try:
    print("====>111")
    print("====>222")
finally:
    print("一定会运行")
print('====>4')
print(xxx)

例5

try:
    print("====>111")
    print("====>222")
    # xxx
    l=[]
    # l[0]
    dic={}
    dic["k1"]
    print("====>333")
except Exception as e:
    print("万能异常",e)
print('====>4')

例6

print('==>11')
raise NameError("变量名未定义")
print('==>222')


class Animal:
    def speak(self):
        raise BaseException("小垃圾必须实现speak方法来覆盖")

    def run(self):
        raise BaseException("小垃圾必须实现run方法来覆盖")


class Dog(Animal):
    pass

class Pig(Animal):
    pass


d=Dog()
p=Pig()

d.speak()
d.run()

p.speak()
d.run()

例7

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

    def __str__(self):
        return "<%s:%s:%s:%s>" % (self.msg,self.x,self.y,self.z)


raise Interface("接口异常", 11, 22, 33)

例8:

print("====1")
print("====2")
print("====3")
salaries=[1.1,2.2]

# if len(salaries) != 3:
#     raise NameError
assert len(salaries) == 3

print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
"""
1、什么是socket
    网络基础=》socket
2、为何要学习socket编程:
    基于socket开发一个C/S或者B/S结构的软件
        Client---------网络------------Server
        Browser--------网络------------Server

3、如何基于socket编程

    网络:https://www.cnblogs.com/linhaifeng/articles/5937962.html


    网络是什么=底层的物理连接介质+互联网通信协议
        OSI七层协议

    网络存在的意义=》通信

4、OSI七层协议
"""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值