day8 (異常處理和網絡編程)
阿新 • • 發佈:2018-01-30
conn art pass name sel class lose 修正 是把
一、異常處理
#1 什麽是異常? # 異常是錯誤發生的信號,一旦程序出錯,就會產生一個異常,應用程序未處理該異常, # 異常便會拋出,程序隨之終止 #2、常見異常類型 #I:語法錯誤應該在程序運行前修正 # if 1 >2 # print(‘xxxxx‘) #II:邏輯錯誤 #x #NameError: name ‘x‘ is not defined # l=[] # l[10000] #IndexError # class Foo: # pass # Foo.x #AttributeError: # k={‘x‘:1} # k[‘y‘] #KeyError #1/0 #ZeroDivisionError # for i in 3: #TypeError: # pass # age=input(‘>>: ‘) # age=int(age) #ValueError #3、如何處理異常 print(‘====>start<=====‘) try: l=[] print(l[1111]) print(‘====>1‘) print(‘====>2‘) print(‘====>3‘) except IndexError: #捕捉Indexerror錯誤,當匹配到該類型的錯誤時會出發except代碼塊的執行,然後繼續執行except後面的代碼!,若沒有匹配到,代碼就不會執行except代碼塊pass print(‘====>end<=======‘) print(‘====>start<=====‘) try: l=[] print(l[1111]) print(‘====>1‘) print(‘====>2‘) print(‘====>3‘) except IndexError as e: #as e 的作用是把異常的值傳給e print(‘===>‘,e) #list index out of range print(‘====>end<=======‘) print(‘====>start<=====‘) try: l=[] #print(l[1111]) print(‘====>1‘) d={} d[‘k‘] print(‘====>2‘) print(‘====>3‘) except IndexError as e: print(‘===>‘,e) print(1111) except KeyError as e: #except可以接多個 當捕捉到異常後,異常的代碼和匹配的except之間的代碼不會執行,然後接著執行匹配到的except之後的代碼!! print(‘----‘,e) print(‘====>end<=======‘) print(‘====>start<=====‘) try: l=[] # print(l[1111]) print(‘====>1‘) d={} d[‘k‘] print(‘====>2‘) print(‘====>3‘) except IndexError: pass except KeyError: pass except Exception as e: #萬能異常捕捉 print(‘萬能異常--->‘,e) print(‘====>end<=======‘) print(‘====>start<=====‘) try: l=[] #print(l[1111]) # print(‘====>1‘) d={} # d[‘k‘] # print(‘====>2‘) # print(‘====>3‘) except IndexError: pass except KeyError: pass except Exception as e: print(‘萬能異常--->‘,e) else: #當沒有異常發生的時候執行 print(‘沒有異常發生的時候觸發‘) #沒有異常發生的時候觸發 finally: #有沒有異常都觸發 print(‘有沒有異常都觸發‘) #有沒有異常都觸發 print(‘====>end<=======‘) ‘‘‘ try: conn=connect(‘1.1.1.1‘,3306) conn.execute(‘select * from db1.t1‘) finally: conn.close() ‘‘‘ # stus=[‘egon‘,‘alex‘,‘wxxx‘] ip_list=[ # ‘1.1.1.1:8080‘, # ‘1.1.1.2:8081‘, # ‘1.1.1.3:8082‘, ] # if len(ip_list) == 0: # raise TypeError #主動觸發異常 assert len(ip_list) > 0 #當不滿足條件時觸發異常 (斷言失敗觸發異常) #AssertionError # print(‘從ip_list取出ip地址,驗證可用性‘) class MyException(BaseException): #自定義異常類型 def __init__(self,msg): super(MyException,self).__init__() self.msg=msg def __str__(self): return ‘<%s>‘ %self.msg #__str__ 的返回值必須是str類型 raise MyException(‘類型錯誤‘) #異常的值:print(obj) 會打印 MyException(‘類型錯誤‘) (打印對象) #__main__.MyException: <類型錯誤>
#異常處理是在異常一定會發發生但是有不可以用代碼處理的情況下使用的
二、socket編程
1、網絡基礎
http://www.cnblogs.com/linhaifeng/articles/5937962.html
day8 (異常處理和網絡編程)