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七层模型。需要掌握五层的

原文地址:https://www.cnblogs.com/ye-hui/p/9892573.html

时间: 2024-11-09 07:36:13

python学习第31天之异常处理、网络编程part1的相关文章

python学习笔记(十一):网络编程

一.python操作网络,也就是打开一个网站,或者请求一个http接口,使用urllib模块. urllib模块是一个标准模块,直接import urllib即可,在python3里面只有urllib模块,在python2里面有urllib模块和urllib2模块. import json from urllib import request from urllib import parse pay_url = 'http://szz.nnzhp.cn/pay' balance_url = 'h

python学习【第十一篇】网络编程

一.socket的简介 socket(简称:套接字)进程间通信的一种方式,它与其他进程间通信的一个主要不同是:能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,如qq聊天.微信聊天等. 二.socke的基本使用 在python中使用socket模块就可以创建套接字: import socket socket.socket(AddressFamily, Type) 函数说明: Address Family:可以选择 AF_INET(用于 Interne

python学习笔记(十八)网络编程中好用的模块介绍

上篇博客中我们使用python自带的urllib模块去请求一个网站,或者接口,但是urllib模块太麻烦了,传参数的话,都得是bytes类型,返回数据也是bytes类型,还得解码,想直接把返回结果拿出来使用的话,还得用json,发get请求和post请求,也不通,使用比较麻烦,还有一个比较方便的模块,比urllib模块方便很多,就是requests模块,它使用比较方便,需要安装,pip install requests即可,下面是requests模块的实例 #1.发get请求 url = 'ht

python学习(二十六)网络编程

1.request方法 发送get请求 from urllib import request import json url='xxx/stu_info?stu_name=xiaohei' req=request.urlopen(url,)#打开一个url发送get请求 content=req.read().decode()#获取返回结果 res_dic=json.loads(content)#返回结果转成字典 if res_dic.get('error_code')==0: print('测试

Python全栈开发之10、网络编程

网络编程就是如何在程序中实现两台计算机的通信,而两台计算机间的通信其实就是两个进程间的通信,进程间的通信主要通过socket(套接字)来描述ip地址(主机)和端口(进程)来实现的,因此我们学习网络编程,必须学习socket 一.socket socket模块是针对 服务器端 和 客户端Socket 进行[打开][读写][关闭],一个完整的套接字模型图如下图所示 在python中读写操作调用的函数有些不一样,下面我们来看一下一个完整的socket(TCP)在服务端和客户端的实现 # server.

JAVA学习第五十九课 — 网络编程概述

网络模型 OSI(Open System Interconnection)开放系统互连:參考模型 TCP/IP 网络通讯要素 IP地址 port号 传输协议 网络參考模型 七层OSI模型的基本概念要了解 网际层协议:包含:IP协议.ICMP协议.ARP协议.RARP协议. 传输层协议:TCP协议.UDP协议. 应用层协议:FTP.Telnet.SMTP.HTTP.RIP.NFS.DNS. 要真正实现网络通讯,首先要找到IP地址,IP地址是网络通讯的一大要素 IP地址:InetAddress 网络

黑马程序员_JavaSE学习总结第26天_网络编程

------- android培训.java培训.期待与您交流! ----------  26.01  网络编程概述 网络编程:就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换. 26.02  网络模型概述和图解 计算机网络之间以何种规则进行通信,就是网络模型研究问题. 网络模型一般是指 OSI(Open System Interconnection开放系统互连)参考模型 TCP/IP参考模型 OSI参考模型七层简述: 1.物理层:主要定义物理设备标准,如网线的接口类型.光纤的接口

《Linux高性能服务器编程》学习总结(五)——Linux网络编程基础API

第五章      Linux网络编程基础API 对于网络编程,首先要了解的就是字节序的问题,字节序分为主机字节序和网络字节序,主机字节序又称小端字节序,是低字节存放在地地址,而网络字节序又称大端字节序,是低字节放在高地址.当数据在不同的机器上传播时,就需要统一字节顺序以保证不出现错误.在发送数据前,先将需要转变的数据转成网络字节序再发送,接收时先转成主机字节序再处理,要特别注意的是,即使是本机的两个进程通信,也要考虑字节序的问题,比如JAVA的虚拟机就使用大端字节序.使用如下代码可以查看本机的字

java学习--基础知识进阶第十二天--网络编程概述、UDP协议、TCP协议

今日内容介绍 u  网络编程概述 u  UDP u  TCP 第1章 网络编程概述 1.1 网络协议 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样.在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式.传输速率.传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换. 网络通信协议有很多种,目前应用最广泛的是TCP/IP协议(Transmission Contro