走入计算机的第三十三天(异常处理和scoket编程)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了走入计算机的第三十三天(异常处理和scoket编程)相关的知识,希望对你有一定的参考价值。

一 异常处理

  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标准的。

                                                                             

  



以上是关于走入计算机的第三十三天(异常处理和scoket编程)的主要内容,如果未能解决你的问题,请参考以下文章

Web-第三十三天 MongoDB初级学习

走入计算机的第三十八天(python的进程和协成))

走入计算机的第三十九天(python终结篇之IO模型)

走入计算机的第三十七天(python的高级用法)

走入计算机的第三十六天(自己创建锁及锁的类型)

Mysql基础第三十三天,改善性能