day28

今日内容
  01 异常处理
  02 socket编程
       网络基础:OSI七层协议
# 异常处理
'''
"""
1、什么是异常
    异常是错误发生的信号,一旦程序出错就会产生一个异常
    如果该异常没有被处理,该异常就会被抛出来,程序的运行随即终止

    异常是由三部分组成
        1、具体哪一行代码抛出的异常
        2、异常的种类
            NameError:变量名没有定义过
            IndexError:索引不存在
            AttributeError:对象属性不存在
            ValueError:值错误
            TypeError:类型错误
            ZeroDivisionError:零除法错误
                1/0
            ......
        3、异常的内容信息

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

3、如何处理异常
    1、针对语法的错误:应该在程序运行前立即改正
    2、针对逻辑错误:
        2.1 如果逻辑错误发生的条件是可以预知的,应该if判断解决,预防异常
        2.2 如果逻辑错误发生的条件是不可预知的,那么异常一定会发生,考虑到程序的健壮性
            我们应该处理异常,做好补救措施
            try:
                代码块
            except 异常的类型:
                发生异常后要执行的代码
"""

# 1 异常类只能用来处理指定的异常情况,如果非指定异常则无法处理。
s1 = 'hello'
e = 111
try:
    int(s1)
except IndexError as e:  # 未捕获到异常,程序直接报错
    print(e)

# 2 多分支
s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)

try:
    int(s1)
except (IndexError, KeyError, ValueError) as e:
    print(e)

# 3 万能异常Exception
s1 = 'hello'
try:
    int(s1)
except Exception as e:
    print(e)

# 4 多分支异常与万能异常
# 4.1 无论出现什么异常,统一丢弃,或者使用同一段代码逻辑去处理他们,只需一个Exception就足够了。
# 4.2 对于不同的异常需要定制不同的处理逻辑,那就需要用到多分支了。

# 5 也可以在多分支后来一个Exception
s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
except Exception as e:
    print(e)

# 6 异常的其他机构
s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
# except Exception as e:
#    print(e)
else:
    print('try内代码块没有异常则执行我')
finally:                    # finally 无论异常与否,都会执行,通常用来进行清理工作
    print('无论异常与否,都会执行该模块,通常是进行清理工作')

# 7 主动触发异常
try:
    raise TypeError('类型错误')
except Exception as e:
    print(e)

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


# 8 自定义异常
# 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)


# 9 断言:assert 条件
print("====1")
print("====2")
print("====3")
salaries = [1.1, 2.2]
# if len(salaries) != 3:
#     raise NameError
assert len(salaries) == 3       # 判断条件是否正确,若正确,则继续执行后续代码,否则自动抛出异常
print(salaries[2])

# 10 总结try..except

# 1:把错误处理和真正的工作分开来
# 2:代码更易组织,更清晰,复杂的工作任务更容易实现;
# 3:毫无疑问,更安全了,不至于由于一些小的疏忽而使程序意外崩溃了;
'''

# 网络基础
"""
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七层协议
     应用层{
        应用层
        表示层
        会话层
             }   
     传输层
     网络层
     数据链路层
     物理层
"""

 

posted @ 2020-08-10 19:26  板鸭没有腿  阅读(68)  评论(0)    收藏  举报