python學習第31天之異常處理、網絡編程part1
一,異常處理
1. 什麽是異常處理
異常是錯誤發生的信號,一旦程序出錯就會產生一個異常,如果該異常
沒有被應用程序處理,那麽該異常就會拋出來,程序的執行也隨之終止
異常包含三個部分:
(1). traceback異常的追蹤信息
(2). 異常的類型
(3). 異常的信息
2. 為何要異常處理
避免程序因為異常而崩潰,所以在應用程序中應該對異常進行處理,從而增強程序的健壯性
3. 如何異常處理
錯誤分為兩大類:
(1). 語法上的錯誤:在程序運行前就應該立即修正
(2). 邏輯上的錯誤
try: 代碼1 代碼2 代碼3 ...... except NameError: 當拋出的異常是NameError時執行的子代碼塊 except ....: pass except ...: passelse: 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