91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python常見異常及處理方法有哪些

發布時間:2023-04-19 16:19:25 來源:億速云 閱讀:135 作者:iii 欄目:開發技術

本篇內容主要講解“python常見異常及處理方法有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“python常見異常及處理方法有哪些”吧!

一、常見的異常

1、NameError 未定義變量異常

print(a)
# 輸出:NameError: name 'a' is not defined

2、IndexError 下標越界異常

list1 = [10] 
print(list1[1])
# 輸出:IndexError: list index out of range

3、IOError 輸入輸出異常

try:
    raise IOError  # 假裝這里有異常,一般針對難以復現的異常
except:
    print('文件讀寫錯誤')

4、FileNotFoundError 找不到文件異常

with open('./中國男足永奪世界冠軍.txt') as file1:
    file1.read()
# 輸出:
# FileNotFoundError: [Errno 2] No such file or directory: 'd/中國男足永奪世界冠軍.txt'

5、ZeroDivisionError 0不能作為分母異常

print(1/0)
# 輸出:
# ZeroDivisionError: division by zero

6、NoSuchElementException 找不到元素

原因:
1、元素表達式寫錯了。
2、元素表達式沒錯,但是元素的確不在當前界面上。
3、元素等待,元素未加載完成,需要等待。
4、內嵌網頁(在一個html標簽里面嵌套一個html)。
    1、iframe標簽相當于大房子里面的小房子。
5、多標簽頁(點擊1個元素打開另外1個頁簽-1,例如點擊'知識手冊')。
	1、要定位"頁簽-1"頁面的元素需要進入到"頁簽-1"頁面。

7、StaleElementReferenceException 陳舊的元素引用異常

1、原因:
    1、進行ui自動化的時候,都是先找到元素,然后再操作元素,這是兩個動作,如果在這兩個動作之間,js 把網頁刷新了,
那么操作元素的時候,就會碰到陳舊的元素引用異常。
2、解決:
    1、每次操作元素的時候都去實時獲取元素。
    2、在po模式中的解決方法是,把每一個元素定位寫成函數。

案例:

class HomePage:
    def __init__(self, url, driver):
        self.driver = driver

    # 我的主頁
    def myPageBox(self):
        return self.driver.find_element_by_css_selector(
            "[class=\"nav nav-pills nav-stacked custom-nav js-left-nav\"] > li:nth-child(1)")

    # 項目管理
    def prM(self):
        return self.driver.find_element_by_css_selector(
            "[class=\"nav nav-pills nav-stacked custom-nav js-left-nav\"] > li:nth-child(2)")

    # 功能:依次點擊 我的主頁、項目管理、我的主頁
    def foo(self):
        """
        1、點擊之后,頁面刷新了。
        2、每一次操作元素時,都是通過函數重新尋找的。
        :return:
        """
        self.myPageBox().click()
        self.prM().click()
        self.myPageBox().click()


hp = HomePage("", driver)
hp.foo()

二、處理異常(Python異常處理|程序調試)

1、捕獲系統異常,轉化成用戶能看懂的提示
2、一個標準的try-except語句,至少要有一個except,也可以多個except,也可以"額外"加else語句與finally語句
3、如果事先不知道是什么異常,可以直接用except,會捕獲所有的異常

try:
    input = int(input('請輸入一個整數:'))
    print(1/input)             # 有異常捕獲異常,沒異常正常執行
except ZeroDivisionError:      # 捕獲0作為分母的異常
    print('0不可以作為分母')
except ValueError:             # 捕獲輸入不是數字無法轉int的異常
    print('您輸入的不是整數')
except:                        # 會捕獲所有的異常
    print('程序出現異常')
else:                          # 當程序正常執行完畢,沒有出現異常,則執行一次else語句
    print('沒有出現異常')
finally:                       # 無論程序是否出現異常,都會執行
    print('程序執行完畢!')

三、手動拋出異常

try:
    raise IOError  # 假裝這里有異常,一般針對難以復現的異常
except:
    print('文件讀寫錯誤')

斷言 assert

一般用于pytest框架

assert 1 == 2  # 當斷言的結果為真時,斷言不做事情,為假時,斷言生效拋出異常
# 輸出:AssertionError

try:
    assert 1 == 2
except AssertionError:
    print('斷言為假.')

補充:

1、所有的異常都是Exception的子類,或子類的子類

2、Exception是object的子類的子類

print(NameError.__bases__)
print(IndexError.__bases__)
print(LookupError.__bases__)
print(Exception.__bases__)
print(BaseException.__bases__)

# 輸出:
# (<class 'Exception'>,)
# (<class 'LookupError'>,)
# (<class 'Exception'>,)
# (<class 'BaseException'>,)
# (<class 'object'>,)

到此,相信大家對“python常見異常及處理方法有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

贵德县| 阿巴嘎旗| 色达县| 巴东县| 梅州市| 疏附县| 蓝山县| 嫩江县| 星座| 巴东县| 衡水市| 恩平市| 浮梁县| 金塔县| 眉山市| 周宁县| 元谋县| 民和| 天门市| 格尔木市| 龙井市| 红原县| 板桥市| 饶河县| 海盐县| 宝应县| 长春市| 高密市| 伊川县| 侯马市| 河东区| 山丹县| 九龙坡区| 德庆县| 凤台县| 资讯| 岳池县| 隆化县| 仁布县| 阜阳市| 辽阳县|