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的主要内容,如果未能解决你的问题,请参考以下文章

Python学习第三天之字符串编码解码,集合,文件,函数

linux基础学习第十八天之网络配置

Oracle学习 第4天之高级查询

python学习第33天网络编程part3

Python学习第31天(异常异常捕捉)

java学习日记第三天之简单算法问题