⑴ python的異常處理語句
捕捉異常可以使用try/except語句。
try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常信息並處理。
如果你不想在異常發生時結束你的程序,只需在try里捕獲它。
語法:
以下為簡單的try....except...else的語法:
try:
<語句> #運行別的代碼
except <名字>:
<語句> #如果在try部份引發了'name'異常
except <名字>,<數據>:
<語句> #如果引發了'name'異常,獲得附加的數據
else:
<語句> #如果沒有異常發生
try的工作原理是,當開始一個try語句後,python就在當前程序的上下文中作標記,這樣當異常出現時就可以回到這里,try子句先執行,接下來會發生什麼依賴於執行時是否出現異常。
⑵ python異常處理
while True:
n = raw_input("Input a number between 2 and 6")
try:
n=int(n)
except Exception:
print "no"
continue
if n >= 2 and n <= 6:
print "ok",n
else:
print "no"
continue
⑶ python中異常處理的問題
意思是在使用with這個關鍵字操作文件的時候不需要額外的處理異常,也就是把下邊的第一段代碼,替換成了第二段代碼,但是功能相同
try:
f=open('file_name','r')
finally:
f.close()
withopen('file_name','r')asf:
foriinf:
None
⑷ python中拋出異常處理
try先輸出1:print(1),然後拋出ValueError異常,直接跳到except ValueError:print(3),輸出3,finally作為無論如何必須要執行的語句,輸出6:print(6).當拋出Exception異常時會輸出4.(應該是這樣的)
⑸ Python中異常重試的解決方案詳解
Python中異常重試的解決方案詳解
大家在做數據抓取的時候,經常遇到由於網路問題導致的程序保存,先前只是記錄了錯誤內容,並對錯誤內容進行後期處理。
原先的流程:
def crawl_page(url):
pass
def log_error(url):
pass
url = ""
try:
crawl_page(url)
except:
log_error(url)
改進後的流程:
attempts = 0
success = False
while attempts < 3 and not success:
try:
crawl_page(url)
success = True
except:
attempts += 1
if attempts == 3:
break
最近發現的新的解決方案:retrying
retrying是一個 Python的重試包,可以用來自動重試一些可能運行失敗的程序段。retrying提供一個裝飾器函數retry,被裝飾的函數就會在運行失敗的條件下重新執行,默認只要一直報錯就會不斷重試。
import random
from retrying import retry
@retry
def do_something_unreliable():
if random.randint(0, 10) > 1:
raise IOError("Broken sauce, everything is hosed!!!111one")
else:
return "Awesome sauce!"
print do_something_unreliable()
如果我們運行have_a_try函數,那麼直到random.randint返回5,它才會執行結束,否則會一直重新執行。
retry還可以接受一些參數,這個從源碼中Retrying類的初始化函數可以看到可選的參數:
stop_max_attempt_number:用來設定最大的嘗試次數,超過該次數就停止重試
stop_max_delay:比如設置成10000,那麼從被裝飾的函數開始執行的時間點開始,到函數成功運行結束或者失敗報錯中止的時間點,只要這段時間超過10秒,函數就不會再執行了
wait_fixed:設置在兩次retrying之間的停留時間
wait_random_min和wait_random_max:用隨機的方式產生兩次retrying之間的停留時間
wait_exponential_multiplier和wait_exponential_max:以指數的形式產生兩次retrying之間的停留時間,產生的值為2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已經retry的次數,如果產生的這個值超過了wait_exponential_max的大小,那麼之後兩個retrying之間的停留值都為wait_exponential_max。這個設計迎合了exponential backoff演算法,可以減輕阻塞的情況。
我們可以指定要在出現哪些異常的時候再去retry,這個要用retry_on_exception傳入一個函數對象:
def retry_if_io_error(exception):
return isinstance(exception, IOError)
@retry(retry_on_exception=retry_if_io_error)
def read_a_file():
with open("file", "r") as f:
return f.read()
在執行read_a_file函數的過程中,如果報出異常,那麼這個異常會以形參exception傳入retry_if_io_error函數中,如果exception是IOError那麼就進行retry,如果不是就停止運行並拋出異常。
我們還可以指定要在得到哪些結果的時候去retry,這個要用retry_on_result傳入一個函數對象:
def retry_if_result_none(result):
return result is None
@retry(retry_on_result=retry_if_result_none)
def get_result():
return None
在執行get_result成功後,會將函數的返回值通過形參result的形式傳入retry_if_result_none函數中,如果返回值是None那麼就進行retry,否則就結束並返回函數值。
⑹ 關於python異常代碼編寫的問題
下一步就是解析json(實際上是dict),得出code的值
⑺ Python 網頁打開異常捕獲
可以直接就寫個except,捕獲所有異常,也可以自己指定異常哇,比如常見的Timeout、IOError、HTTPError等等
⑻ Python異常
這段代碼在matplotlib 2.0.2 運行正常,會不會是你的matplotlib太舊了?
⑼ 請教:python如何處理異常
異常種類
python中的異常種類非常多,每個異常專門用於處理某一項異常!!!
下面是一些常用的異常:
異常基礎
在編程過程中為了增加友好性、容錯性和健壯性,在程序出現bug時一般不會將錯誤信息顯示給用戶,而是現實一個提示的頁面,通俗來說就是不讓用戶看見大黃頁!!!還有,有時我們不希望一個小bug的出現讓整個程序都崩潰,自動退出或者藍屏,我們需要抓取這個錯誤異常,並進行處理,讓用戶能夠繼續使用下去。
註:在python3中,except Exception , ex的別名方法已經不能使用,逗號被認為是兩種異常的分隔符,而不是取別名。
下面是一個實例:
更多的異常在這里:
如果程序發生的異常不在你設定的異常之中,那麼依然會報錯。
這個例子中,你只設置了捕獲IndexError,而實際會發生一個ValueError,因此它依然會報錯。
要同時捕獲多個異常如何寫呢?
程序會按異常的先後順序進行捕獲,任意一個被捕獲,則進行異常處理,並忽略try會後的代碼和別的異常處理代碼。
萬能異常:Exception
在python的異常中,有一個萬能異常:Exception,他可以捕獲任意異常,相當於一個人把所有的活全乾了。那你可能要問了,既然有這個萬能異常,其他異常是不是就可以不需要了!
當然不是,對於特殊處理或提醒的異常需要先定義,用於准確判斷錯誤類型,存儲錯誤日誌,而最後定義Exception用來確保程序正常運行。
⑽ 為什麼會有python異常
因為你寫錯代碼了啊!