1. 程式人生 > >python學習第31天之異常處理、網絡編程part1

python學習第31天之異常處理、網絡編程part1

spa 物理 常用 else 第一步 inpu peer 軟件開發者 要求

一,異常處理

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