中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

五指山市| 盐山县| 西充县| 兴化市| 大同市| 南投县| 江华| 汉阴县| 贵定县| 潍坊市| 沛县| 崇左市| 安阳市| 阿克苏市| 治县。| 苏尼特右旗| 防城港市| 磴口县| 南投市| 巴彦淖尔市| 青神县| 都江堰市| 南汇区| 新野县| 苍梧县| 甘泉县| 彩票| 定州市| 波密县| 江孜县| 墨玉县| 榕江县| 广水市| 辉南县| 大荔县| 铜梁县| 四平市| 甘德县| 沂水县| 秀山| 分宜县|