當前位置:首頁 » 編程語言 » python捕獲

python捕獲

發布時間: 2023-11-06 04:32:13

python 異常處理總結

什麼是異常?

異常即是一個事件,該事件會在程序執行過程中發生,影響了程序的正常執行。一般情況下,在Python無法正常處理程序時就會發生一個異常。

異常是Python對象,表示一個錯誤。當Python腳本發生異常時我們需要捕獲處理它,否則程序會終止執行。

python提供了兩個非常重要的功能來處理python程序在運行中出現的異常和錯誤。你可以使用該功能來調試python程序。

異常處理: 本站Python教程會具體介紹。
斷言(Assertions):本站Python教程會具體介紹。

異常處理

捕捉異常可以使用try/except語句。try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常信息並處理。如果你不想在異常發生時結束你的程序,只需在try里捕獲它。

語法:

以下為簡單的try….except…else的語法:

try的工作原理是,當開始一個try語句後,python就在當前程序的上下文中作標記,這樣當異常出現時就可以回到這里,try子句先執行,接下來會發生什麼依賴於執行時是否出現異常。

· 如果當try後的語句執行時發生異常,python就跳回到try並執行第一個匹配該異常的except子句,異常處理完畢,控制流就通過整個try語句(除非在處理異常時又引發新的異常)。

· 如果在try後的語句里發生了異常,卻沒有匹配的except子句,異常將被遞交到上層的try,或者到程序的最上層(這樣將結束程序,並列印預設的出錯信息)。

· 如果在try子句執行時沒有發生異常,python將執行else語句後的語句(如果有else的話),然後控制流通過整個try語句。

實例

下面是簡單的例子,它打開一個文件,在該文件中的內容寫入內容,且並未發生異常:

以上程序輸出結果:

實例

下面是簡單的例子,它打開一個文件,在該文件中的內容寫入內容,但文件沒有寫入許可權,發生了異常:

以上程序輸出結果:

使用except而不帶任何異常類型

你可以不帶任何異常類型使用except,如下實例:

以上方式try-except語句捕獲所有發生的異常。但這不是一個很好的方式,我們不能通過該程序識別出具體的異常信息。因為它捕獲所有的異常。

使用except而帶多種異常類型

你也可以使用相同的except語句來處理多個異常信息,如下所示:

try-finally 語句

try-finally 語句無論是否發生異常都將執行最後的代碼。

實例

如果打開的文件沒有可寫許可權,輸出如下所示:

同樣的例子也可以寫成如下方式:

當在try塊中拋出一個異常,立即執行finally塊代碼。finally塊中的所有語句執行後,異常被再次提出,並執行except塊代碼。參數的內容不同於異常。

異常的參數

一個異常可以帶上參數,可作為輸出的異常信息參數。你可以通過except語句來捕獲異常的參數,如下所示:

變數接收的異常值通常包含在異常的語句中。在元組的表單中變數可以接收一個或者多個值。

元組通常包含錯誤字元串,錯誤數字,錯誤位置。

實例

以下為單個異常的實例:

以上程序執行結果如下:

觸發異常

我們可以使用raise語句自己觸發異常

raise語法格式如下:

語句中Exception是異常的類型(例如,NameError)參數是一個異常參數值。該參數是可選的,如果不提供,異常的參數是」None」。

最後一個參數是可選的(在實踐中很少使用),如果存在,是跟蹤異常對象。

實例

一個異常可以是一個字元串,類或對象。 Python的內核提供的異常,大多數都是實例化的類,這是一個類的實例的參數。

定義一個異常非常簡單,如下所示:

注意:為了能夠捕獲異常,」except」語句必須有用相同的異常來拋出類對象或者字元串。

例如我們捕獲以上異常,」except」語句如下所示:

用戶自定義異常

通過創建一個新的異常類,程序可以命名它們自己的異常。異常應該是典型的繼承自Exception類,通過直接或間接的方式。

以下為與RuntimeError相關的實例,實例中創建了一個類,基類為RuntimeError,用於在異常觸發時輸出更多的信息。

在try語句塊中,用戶自定義的異常後執行except塊語句,變數 e 是用於創建Networkerror類的實例。

在你定義以上類後,你可以觸發該異常,如下所示:

來源 | 腳本之家 原文鏈接:http://www.jb51.net/article/47996.htm

㈡ python怎麼抓取網頁中DIV的文字

使用 BeautifulSoup 進行解析 html,需要安裝 BeautifulSoup

#coding=utf-8

importurllib2
importsocket
importhttplib
frombs4importBeautifulSoup

UserAgent='Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/57.0.2987.98Safari/537.36'

defdownloadPage(url):

try:

opener=urllib2.build_opener()

headers={'User-Agent':UserAgent}

req=urllib2.Request(url=url,headers=headers)

resp=opener.open(req,timeout=30)
result=resp.read()

returnresult

excepturllib2.HTTPError,ex:
printex
return''
excepturllib2.URLError,ex:
printex
return''
exceptsocket.error,ex:
printex
return''
excepthttplib.BadStatusLine,ex:
printex
return''


if__name__=='__main__':

content=downloadPage("這填douban的地址")

#printcontent

soap=BeautifulSoup(content,'lxml')

lst=soap.select('ol.grid_viewli')

foriteminlst:
#電影詳情頁鏈接
printitem.select('div.item>div.pica')[0].attrs['href']

#圖片鏈接
printitem.select('div.item>div.picaimg')[0].attrs['src']

#標題
printitem.select('div.item>div.info>div.hd>a>span.title')[0].get_text()

#評分
printitem.select('div.item>div.info>div.bd>div.star>span.rating_num')[0].get_text()
print'-------------------------------------------------------------------------'

㈢ Python with as為什麼無法捕獲異常

with在打開文件的這個操作中的作用是保證每次正常打開文件後,不論遇到什麼,最後都會執行文件的關閉操作,避免腳本中遺漏。但是他自身並沒有抓取異常的處理機制。

with open("asdasdas") as a:

print("打開成功")

do_something()

這段代碼的含義,相當於打開了文件「asdasdas」後列印了「打開成功」的字樣後,又處理了do_something()這段邏輯。不論do_something()這段邏輯正常執行結束,還是拋出異常,都會保證最終「asdasdas」這個文件都會被關閉。避免因為文件未被關閉而導致的種種問題。


你的代碼可以改為以下部分,這樣就可以catch到讀取文件中的異常了。

try:

with open("asdasdas") as a:

print("打開成功")

except:

print("打開失敗")

㈣ python常見異常和異常捕獲

NameError錯誤,比如:

結果:

SyntaxError錯誤,比如:

結果:

ValueError錯誤,比如:

結果:

IndexError錯誤,比如:

結果:

IndentationError錯誤,也就是縮進錯誤,比如:

結果:

KeyError錯誤,比如:

結果:

AttributeError錯誤,屬性錯誤,比如:

結果:

對特定的錯誤進行捕獲 ,用as可以自定義自己想要的提示信息,比如:

結果:

捕獲多個異常 ,需要注意的是捕獲多個異常時要用(),因為except後面只能接一個參數,比如:

結果:

捕獲全部異常時,可以用Exception,比如:

結果:

自定義錯誤信息,比如:

結果:

異常捕獲中finally的使用。一般用於不管程序是否錯誤,程序最後都應該執行的步驟,例如在文件操作中,關閉文件是最後必須執行的操作,比如:

結果:

㈤ python如何捕獲錯誤信息

首先我們聲明一個字元串,然後構建下表獲取字元串中的字元,
然後我們經常會用一個越界的下表進行訪問,就會報如下的錯誤:
相關推薦:《Python教程》
如果我們想捕獲這個錯誤,並且加入我們自己的提示信息的話,可以用try與catch進行,
另外except中也可以精確的指定某一個異常類型,如下圖所示,指定了除數為0的異常。
如果想輸出異常提示信息的話,直接在except里進行輸出即可,
最後提醒一下的是,try與except語句中也可以運用else語句的,
綜上所述,python中進行異常的捕獲運用try與except語句即可,異常信息的顯示也可以自己進行定製。

㈥ python—raise異常捕獲

1、raise的作用:顯式的拋出異常。當出現異常時,raise後面的語句就不會執行

2、raise後面可以是一個class、也可以是一個對象

3、try...except...else

熱點內容
創建資料庫並設置編碼 發布:2025-01-31 11:11:52 瀏覽:781
搭建數據中心需要的伺服器配置 發布:2025-01-31 11:11:44 瀏覽:590
c語言小數點後四捨五入 發布:2025-01-31 11:10:10 瀏覽:496
httpslinux 發布:2025-01-31 11:10:09 瀏覽:828
java4 發布:2025-01-31 11:08:42 瀏覽:355
什麼是密碼屏蔽 發布:2025-01-31 11:05:13 瀏覽:216
一個演算法的效率可分為 發布:2025-01-31 11:05:12 瀏覽:639
win7用戶名密碼是什麼 發布:2025-01-31 10:57:38 瀏覽:394
網址埠訪問 發布:2025-01-31 10:49:30 瀏覽:512
javaweb代碼 發布:2025-01-31 10:37:54 瀏覽:259