python学习第31天之异常处理网络编程part1
Posted yehuihuihui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)异常处理的多分支
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七层模型。需要掌握五层的
以上是关于python学习第31天之异常处理网络编程part1的主要内容,如果未能解决你的问题,请参考以下文章