基於python requests selenium爬取excel vba過程解析
阿新 • • 發佈:2020-08-12
一、異常處理
""" 1、什麼是異常 異常是錯誤發生的訊號,一旦程式出錯就會產生一個異常 如果該異常沒有被處理,該異常就會被丟擲來,程式的執行隨即終止 異常是由三部分組成 1、具體哪一行程式碼丟擲的異常 2、異常的種類 NameError:變數名沒有定義過 IndexError:索引不存在 l=[11,22] l[100] KeyError d={"k1":11} d["k2"] AttributeError:物件屬性不存在 物件.屬性 ValueError: int("asdf") TypeError: "asdf"+1111 ZeroDivisionError 1/0 3、異常的內容資訊 2、為何要處理異常 為了增強程式的健壯性 3、如何處理異常 1、針對語法的錯誤:應該在程式執行前立即改正 2、針對邏輯錯誤: 2.1 如果邏輯錯誤發生的條件是可以預知的,應該if判斷解決,預防異常 age = input('>>: ').strip() if age.isdigit(): age=int(age) if age > 18: print('too big') elif age < 18: print('too small') else: print("got it") else: print('必須輸入數字') 2.2 如果邏輯錯誤發生的條件是不可預知的,那麼異常一個會發生,考慮到程式的健壯性 我們應該處理異常,做好補救措施 try: 程式碼塊 except 異常的型別: 發生異常後要執行的程式碼""" # 例1 # try: # print("====>111") # print("====>222") # xxx # print("====>333") # except AttributeError as e: # print(e) # # print('====>4') # 例2 # try: # print("====>111") # print("====>222") # xxx # print("====>333") # except NameError as e:# print(e) # # print('====>4') # # 例3 # try: # print("====>111") # print("====>222") # # xxx # # l=[] # # l[0] # dic={} # dic["k1"] # print("====>333") # except (NameError,IndexError) as e: # print("=---->",e) # except KeyError as e: # print(e)# # print('====>4') # # 例4 # try: # print("====>111") # print("====>222") # xxx=111 # # l=[] # # l[0] # dic={} # # dic["k1"] # print("====>333") # except (NameError,IndexError) as e: # print("=---->",e) # except KeyError as e: # print(e) # finally: # print("一定會執行") # print('====>4') # # print(xxx) # # 例4 # try: # print("====>111") # print("====>222") # finally: # print("一定會執行") # print('====>4') # # print(xxx) # # 例5 # try: # print("====>111") # print("====>222") # # xxx # l=[] # # l[0] # dic={} # dic["k1"] # print("====>333") # except Exception as e: # print("萬能異常",e) # print('====>4') # 例6 # print('==>11') # raise NameError("變數名未定義") # print('==>222') # class Animal: # def speak(self): # raise BaseException("小垃圾必須實現speak方法來覆蓋") # # def run(self): # raise BaseException("小垃圾必須實現run方法來覆蓋") # # # class Dog(Animal): # pass # # class Pig(Animal): # pass # # # d=Dog() # p=Pig() # # d.speak() # d.run() # p.speak() # d.run() # 例7 # class Interface(BaseException): # def __init__(self, msg, x, y, z): # self.msg = msg # self.x = x # self.y = y # self.z = z # # def __str__(self): # return "<%s:%s:%s:%s>" % (self.msg,self.x,self.y,self.z) # # # raise Interface("介面異常", 11, 22, 33) # 例8: print("====1") print("====2") print("====3") salaries=[1.1,2.2] # if len(salaries) != 3: # raise NameError assert len(salaries) == 3 print(salaries[2]) print(salaries[2]) print(salaries[2]) print(salaries[2]) print(salaries[2]) print(salaries[2]) print(salaries[2]) print(salaries[2]) print(salaries[2]) print(salaries[2]) print(salaries[2]) print(salaries[2])