欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

怎么處理python中的異常-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!

成都創(chuàng)新互聯(lián)公司主營三元網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā)公司,三元h5小程序設(shè)計搭建,三元網(wǎng)站營銷推廣歡迎三元等地區(qū)企業(yè)咨詢

今天就跟大家聊聊有關(guān)怎么處理python中的異常,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

異常是什么

異常是可以修改程序控制流程的事件。

在 Python 中,異??梢员诲e誤自動觸發(fā),也可以由你的代碼手動觸發(fā)。

我們將學習4種處理異常的語句,第一種有兩種形式,最后一種是 Python 2.6 和 Python 3.0 中的可選擴展。

try/except:捕捉并恢復 Python 自動觸發(fā)的或自己代碼中的異常。

try/finally:無論異常是否發(fā)生,執(zhí)行清理操作。

raise:手動觸發(fā)一個異常。

with/as:在 Python 2.6 ,3.0 或更新的版本中實現(xiàn)上下文管理器。

try/except 語句

try:
    statements           # Run this main action first
except name1:       
  # Run if name1 is raised during try block
    statements
except (name2, name3):   
   # Run if any of these exceptions occur
    statements 
except name4 as var:     
     # Run if name4 is raised, assign instance raised to var 
    statements
except:                  # Run for all other exceptions raised
    statements
else:
    statements           # Run if no exception was raised during try block
list_of_numbers = [number for number in range(1, 100)]
print(list_of_numbers)
dictionary_of_numbers = {}
for number in list_of_numbers:
    dictionary_of_numbers[number**2] = number
    
try:
    index = list_of_numbers.index(2)
    value = dictionary_of_numbers[index]
except (ValueError, KeyError):
    print('Error Raised, but Controlled! ')
else: 
    # This executes ONLY if no exception is raised
    print('Getting number at position %d : %d' % (index, value))
finally:
    # Do cleanup operations
    print('Cleaning UP')

try/finally 語句

try/finally 是 try 語句的一種形式,finally 語句是 try 之后無論是否出現(xiàn)異常都要執(zhí)行的語句。

try:
    statements # Run this action first 
finally:
    statements # Always run this code on the way out

with/as 上下文管理器

Python 2.6 和 3.0 引入了一個新的異常相關(guān)的語句-with 和可選的 as 子句。with語句允許開發(fā)者創(chuàng)建上下文管理器,上下文管理器就是允許你可以自動地開始和結(jié)束一些事情。例如,你可能想要打開一個文件,然后寫入一些內(nèi)容,最后再關(guān)閉文件。這就是上下文管理器中一個最經(jīng)典的示例。事實上,當你利用with語句打開一個文件時,Python替你自動創(chuàng)建了一個上下文管理器。

上下文管理器簡介

基本用法

with expression [as variable]: 
    with-block

經(jīng)典用法

with open(r'C:\misc\data') as myfile: 
    for line in myfile:
        print(line)
    # ...more code here...

使用多個上下文管理器

with open('script1.py') as f1, open('script2.py') as f2: 
    for (linenum, (line1, line2)) in enumerate(zip(f1, f2)):
        if line1 != line2:
            print('%s\n%r\n%r' % (linenum, line1, line2))

工作原理

上下文管理器必須包含 __enter__ 和 __exit__ 方法。

__enter__ 方法被自動調(diào)用,如果存在 as 子句,返回值就被賦值給 as 后的變量,沒有就直接丟棄。

嵌套在 with 語句下的代碼被執(zhí)行。

如果 with 語句中的代碼拋出異常, __exit__(type, value, traceback) 方法就會被調(diào)用。參數(shù)值是和 sys.exc_info() (Python 內(nèi)置函數(shù))函數(shù)返回值相同的值。如果這個方法返回了一個 false 值,異常就會被重新拋出,否則異常終止。異常重新拋出是以常規(guī)方式拋出的,因此在 with 語句外捕獲。

如果 with 語句里的代碼塊沒有拋出異常,__exit__ 方法仍舊會被調(diào)用,但是參數(shù)會被置為 None。

異常用法

class TraceBlock:
    def message(self, arg):
        print('running ' + arg) 
        
    def __enter__(self):
        print('starting with block')
        return self
    
    def __exit__(self, exc_type, exc_value, exc_tb):
        if exc_type is None: 
            print('exited normally\n')
        else:
            print('raise an exception! ' + str(exc_type)) 
            return False # Propagate
with TraceBlock() as action: 
    action.message('test 1')
    print('reached')
with TraceBlock() as action: 
    action.message('test 2') 
    raise TypeError()
    print('not reached')

用戶自定義異常

class AlreadyGotOne(Exception): 
    pass

def gail():
    raise AlreadyGotOne()
try:
    gail()
except AlreadyGotOne:
    print('got exception')
class Career(Exception):
    
    def __init__(self, job, *args, **kwargs):
        super(Career, self).__init__(*args, **kwargs)
        self._job = job
    
    def __str__(self): 
        return 'So I became a waiter of {}'.format(self._job)
    
raise Career('Engineer')

看完上述內(nèi)容,你們對怎么處理python中的異常有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝大家的支持。

分享文章:怎么處理python中的異常-創(chuàng)新互聯(lián)
當前鏈接:http://aaarwkj.com/article42/phhhc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、靜態(tài)網(wǎng)站手機網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、ChatGPT、用戶體驗

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
日日干夜夜射天天操| 国产日产亚洲综合一区| 国产国产人免费人成免费人妖| 国产偷自一区二区三区| 一区二区三区国产精品乱码| 日韩成年人高清精品不卡一区二区 | 国产姐弟操大率悠荡笕| 最新日韩人妻中文字幕一区| 欧美一区二区国产精品日韩| 免费欧美大片在线观看高清| 成年人正常性生活频率| 亚洲三级黄色在线观看| 国产欧美日韩经典一区| 久久精品亚洲毛片美女极品| 国语对白自拍视频在线播放| 亚洲欧美日韩国产桃色| 欧美一级特黄大片做受另类| 99国产综合精品女| 中文字幕乱码人妻一二三| 日韩精选视频在线播放| 亚洲二区三区四区在线| 中国一级黄片免费欧美| 国产日韩久久免费电影| 黑人巨大精品欧美一区免| 国产男女猛烈无遮挡av| 国产精品国产一级国产av| 黄色高清无遮挡在线观看| 国产黄片大秀在线观看| 四虎精品视频在线播放| 精品久久久久久蜜臀av| 亚洲激情久热中文字幕| 亚洲全乱码精品一区二区| 人妻有码中文字幕在线| 国产av剧情极品丝袜美女| 给我搜亚洲免费播放黄色大片| 国产乱码精品免费一区二区av| 97国产成人精品视频免费| 久久夜色精品亚洲国产| 国产日韩欧美一区二区丝袜| 欧美日韩在线不卡成人| 久久精品国产久精国产爱|