python学习第31天之异常处理、网络编程part1

一,异常处理

1. 什么是异常处理
异常是错误发生的信号,一旦程序出错就会产生一个异常,如果该异常
没有被应用程序处理,那么该异常就会抛出来,程序的执行也随之终止

异常包含三个部分:
(1). traceback异常的追踪信息
(2). 异常的类型
(3). 异常的信息

2. 为何要异常处理

避免程序因为异常而崩溃,所以在应用程序中应该对异常进行处理,从而增强程序的健壮性

3. 如何异常处理

错误分为两大类:
(1). 语法上的错误:在程序运行前就应该立即修正
(2). 逻辑上的错误

try:
    代码1
    代码2
    代码3
    ......
except NameError:
    当抛出的异常是NameError时执行的子代码块
except ....:
    pass
except ...:
    pass
else:
    pass
finally:
    pass

1、常见的逻辑错误导致的异常

 print('adsfsadf'

# age=input('>>: ').strip()
# print(age > 10) #TypeError

# for i in 10: #TypeError
#     pass

# import os
# os.xxx #AttributeError

# 1 / 0 #ZeroDivisionError:

# print('=====1')
# print('=====2')
# print('=====3')
# l=[1,2,3]
# l[1000] #IndexError
# print('=====4')
# d={'x':1,'y':2}
# d['z'] #KeyError
# print('=====5')

2. 异常处理

(1)异常处理的单分支

try:
#     print('=====1')
#     print('=====2')
#     print('=====3')
#     d = {'x': 1, 'y': 2}
#     d['z']  # KeyError
#     print('=====4')
#     l = [1, 2, 3]
#     l[1000]  # IndexError
#     print('=====5')
# except IndexError:
#     print('IndexError')
#
# print('other code')

(2)异常处理的多分支

扫描二维码关注公众号,回复: 3886350 查看本文章
try:
#     print('=====1')
#     print('=====2')
#     print('=====3')
#     d = {'x': 1, 'y': 2}
#     d['z']  # KeyError
#     print('=====4')
#     l = [1, 2, 3]
#     l[1000]  # IndexError
#     print('=====5')
# except KeyError as e:
#     print('KeyError',e)
# except IndexError as e:
#     print('IndexError',e)
#
#
# print('other code')
# try:
#     print('=====1')
#     print('=====2')
#     print('=====3')
#     d = {'x': 1, 'y': 2}
#     # d['z']  # KeyError
#     print('=====4')
#     l = [1, 2, 3]
#     l[1000]  # IndexError
#     print('=====5')
# except (KeyError,IndexError) as e:                     写在一起,都能匹配,任何一个匹配到就抛出
#     print(e)
# print('other code')

变量e专门接受异常的值

#1、万能异常类型Exception:可以匹配任意类型的异常

# try:
#     print('=====1')
#     print('=====2')
#     print('=====3')
#     d = {'x': 1, 'y': 2}
#     # d['z']  # KeyError
#     # xxx
#     print('=====4')
#     l = [1, 2, 3]
#     l[1000]  # IndexError
#     print('=====5')
# except IndexError as e:
#     print('IndexError:', e)
# except KeyError as e:
#     print('KeyError:', e)
# except Exception as e:
#     print('Exception:',e)
#
# print('other code')

#2  try... else...的用法

else必须放到后面,else的子代码块会在被检测的代码没有异常的情况下执行

# try:
# print('=====1')
# print('=====2')
# print('=====3')
# d = {'x': 1, 'y': 2}
# # d['z'] # KeyError
# # xxx
# print('=====4')
# l = [1, 2, 3]
# # l[1000] # IndexError
# print('=====5')
# except IndexError as e:
# print('IndexError:', e)
# except KeyError as e:
# print('KeyError:', e)
# except Exception as e:
# print('Exception:',e)
# else:
# print('else必须放到后面,else的子代码块会在被检测的代码没有异常的情况下执行')
# # print('other code')

#3、try... finally...的作用

无论被检测的代码有没有异常都会执行',常用于回收资源的操作

3、自定义异常:

 (1)主动触发异常:raise TypeError ('类型错误’),强行异常

通常用于资源被无限占用的时候,主动抛出异常。自定义的语法

 print('===>1')
# print('===>2')
# raise TypeError('类型错误')
# print('===>3')
# class People:
#     def __init__(self,name,age):
#         self.__name=name
#         self.__age=age
#
#     def tell_info(self):
#         print(self.__name,self.__age)
#
#     def set_info(self,name,age):
#         if not isinstance(name,str):
#             raise TypeError('名字必须是str类型')
#         if not isinstance(age,int):
#             raise TypeError('年龄必须是int类型')
#         self.__name=name
#         self.__age=age
#
# obj=People('egon',18)      
# # print(obj.__dict__)
# # obj.tell_info()       
#
# obj.set_info(33,‘33’)   比如我们传不符合要求的值就会报错
# obj.tell_info()              

(2)

# class MyException(BaseException):
#     def __init__(self,msg):
#         super().__init__()
#         self.msg=msg
#
#     def __str__(self):          
#         return '<%s>' %self.msg   专门在打印时候把异常值显示出来
# # raise MyException('我自定义的异常') 打印对象

4、断言

print('上半部分,生产数据')            
l=[1,2,3,4]

# if len(l) != 5:
#     raise TypeError('列表的长度必须为5')
assert len(l) == 5

print('下半部分,处理数据')

if len(l)=assert len(l)

二、网络编程part1

1、应用软件的架构
(1).C/S           客户端————服务端
client ==== server

(2).B/S                        
browser === server

在不同的计算机上 一个安装客户端 另一安装服务端 通过网络来通讯

什么是网络通讯?

要完成通讯必须具备的条件
(1).物理连接介质 (网线,WIFI,光纤)
(2).必须遵循相同的标准

在计算机网络中同样需要具备这两个条件
作为应用软件开发者 不需要关心第一步 重点是通讯的标准(通讯的协议)

网络协议:
open system interconnection
OSI七层模型。需要掌握五层的

猜你喜欢

转载自www.cnblogs.com/ye-hui/p/9892573.html