标签:抽象 .so sed 错误类型 final ide 链路层 一个 检查
一 异常处理
1 异常和错误,而错误分成了两种
一是语法错误,这种错误过不了解释器的检测,必须要在执行前改正
二是逻辑错误,在执行的时候检测出了错误。
2 什么是异常:异常就是程序在运行是产生的错误信息。
3 异常的种类
python3中不同的异常分为不同的类型,用不同的类型去标识。不同的类型对象错误都有相对应的标识语法。
AssertionErr: 断言语句失败;关键字后边的条件为假的时候,程序将 停止并抛出AssertionError异常,语句一般是在测试程序的时候用于在代码中置入的检查点。
AttributeError:尝试访问的未知的对象属性;尝试访问的对象属性不存在时抛出的异常。
IndexError:索引超出系列的范围;使用大的时候一般会抛出IndexError异常,原因是索引超出序列范围的类容。
KeyError:字典中查抄一个不存在的关键字;在字典中查找一个不存在的关键字时就会引发KeyError异常,因此建议使用dict.get()方法。
NameError:尝试访问一个不存在的变量;在尝试访问一个不存在的变量时,就会抛出NameError异常。 OSError:操作系统产生的异常;OSError就是操作系统产生的异常,就像打开一个不存在的文件,会引发FlieNotFoundError,而这个就是OSError的子类。导致OSError异常的有很多,所以可能更在乎错误的具体类容。可以使用as把2具体的错误信息打印出来。
SyntaxError:语法错误;如果遇到SyntaxError就是语法错误,这时候就不会继续执行代码了,应该先找到并改正错误。
TypeError:不同类间的无效的操作;有些类型不同是不能相互计算的,否则会抛出TypeError异常。
ZeroDivisionError:除数为零;除数是不能为零的,不然就会抛出ZeroDivisionError异常。 而上列不同类型的异常他们的使用方法是一样的:
try:
检测的类容
except 错误类型的语句
try-except是用来检测和处理异常的。一个try语句可以跟多个except的语句搭配,分别对相对应的异常检测处理。except后面可以跟多个异常jangle,然后对这些异常进行统一的处理。
如果无法确认是哪一类的异常错误,可以使用exception万能异常来处理。然后再给用户一个看的懂的提示。
4 try—finally语句
如果出现异常,但也不得不执行收尾的工作,这就引入了用finally来扩展try。不管检测的内容有没有异常,到最后都会执行finally的收尾工作。
5 raise语句:可以使用 raise来抛出一个异常。
6 slse语句
不仅可以和if使用,还可以和循环语句使用,不止这样,在这里,还可以和try语句搭配使用。
else语句和try搭配使用,实现的功能和循环语句的差不多,只有try语句没用出现异常,就不执行else语句以及里面的内容。
7 with语句
有的人觉得打开文件又要关闭文件,还要关注异常处理,觉得很麻烦,所以python提供了一个with语句,利用这语句抽象出文件操作中频繁使用的try/exce/finally相关的细节,对文件操作使用with语句,将会减少大量的代码量,而且还不用担心文件打开却忘记关闭的问题。
总结,try提高了代码的可读性,提高了代码的执行效率。
二 scoket编程
1 客户端/服务器架构
即C/S架构
在互联网中处处都是C/S架构,就相当我们是客户端,而服务端就是我们想要在电脑上查询的内容。
1 import socket 2 phone_server=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 3 phone_server.bind((‘127.0.0.1‘,8080)) 4 phone_server.listen(5) 5 print(‘server run...‘) 6 conn,client_addr=phone_server.accept() 7 print(‘客户端: ‘,client_addr) 8 client_msg=conn.recv(1024) 9 print(‘client_msg‘,client_msg.encode(‘utf-8‘)) 10 conn.send(‘haha‘.encode(‘utf-8‘)) 11 conn.close() 12 phone_server.close()
1 import socket 2 phone_client=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 3 phone_client.connect((‘127.0.0.1‘,8080)) 4 phone_client.send((‘lalala‘.encode(‘utf-8‘))) 5 server_res=phone_client.recv(1024) 6 print(‘server_res:‘,server_res.decode(‘utf-8‘)) 7 phone_client.close()
2 一个完整的计算机内容是由硬件、操作系统、应用软件三者组成,具备了这三个条件,一台计算机系统就可以自己跟自己玩了。
为何学习socket一定要先学习互联网协议:
1.首先:本节课程的目标就是教会你如何基于socket编程,来开发一款自己的C/S架构软件
2.其次:C/S架构的软件(软件属于应用层)是基于网络进行通信的
3.然后:网络的核心即一堆协议,协议即标准,你想开发一款基于网络通信的软件,就必须遵循这些标准。
4.最后:就让我们从这些标准开始研究,开启我们的socket编程之旅
TCP/IP协议族包括运输层、网络层、链路层。
3 socket层
4 socket是什么
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在
Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。
标签:抽象 .so sed 错误类型 final ide 链路层 一个 检查
原文地址:http://www.cnblogs.com/fangjie0410/p/7147064.html