一,异常处理
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)异常处理的多分支
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七层模型。需要掌握五层的
原文地址:https://www.cnblogs.com/ye-hui/p/9892573.html