1. 程式人生 > 程式設計 >基於python requests selenium爬取excel vba過程解析

基於python requests selenium爬取excel vba過程解析

一、異常處理

"""
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])