pythonraise
『壹』 python raise EOFError 錯誤
應該是對同一個文件,同時執行了多次打開操作造成的!
『貳』 python raise干什麼的
有異常了 可以用rasie決定異常了該做什麼
不過 即使沒有異常 也可以raise來定義滿足特定條件後拋棄什麼異常
try:
count[t]+=1
except KeyError:
count[t]=1
if count[t]>1:
raise forms.ValidationError("tag '%s' 重復出現了%s次"%(str(t),str(count[t])))
『叄』 請教關於python的raise使用的問題
python中的異常
異常是指程序中的例外,違例情況。異常機制是指程序出現錯誤後,程序的處理方法。當出現錯誤後,程序的執行流程發生改變,程序的控制權轉移到異常處理。
Exception類是常用的異常類,該類包括StandardError,StopIteration, GeneratorExit, Warning等異常類。
StandardError類是python中的錯誤異常,如果程序上出現邏輯錯誤, 將引發該異常。StandardError類是所有內斂異常的基類,放置在默認的命名空間中,因此使用IOEroor,
EOFError, ImportError等類,不需要導入exception模塊。
StopIteration類判斷循環是否執行到尾部,如果循環到尾部,則拋出該異常。
GeneratorExit類是由Generator函數引發的異常,當調用close()時引發該異常。
Warning類表示程序中的代碼引起的警告。
python中的異常使用繼承結構創建,可以在異常處理程序中捕獲基類異常,也可以捕獲各種子類異常,python中使用try...except語句捕獲異常,異常子句定義在try子句後面。
try...except的使用方法
try...except用於處理問題語句,捕獲可能出現的異常。try子句中的代碼塊放置可能出現異常的語句,except子句中的代碼塊處理異常。
演示try...except語句捕獲IOError異常
try:
file("hello.txt", "r") #如果文件不存在,引發異常
print "讀文件"
except IOError: #捕獲IO異常
print "文件不存在"
except: #其它異常
print "程序異常"
python與Java的異常處理模式相似,異常處理語句也可以嵌套,演示如下:
try:
s = "hello"
try:
print s[0] + s[1]
print s[0] - s[1]
except TypeError:
print "字元串不支持減法運算"
except:
print "異常"
如果外層try子句中的代碼引發異常,程序將直接跳轉到外層try對應的except子句,而內部的try子句將不會被執行。
try...finally的使用方法
try...except後還可以添加一個finally子句。無論異常是否發生,finally子句都會被執行。所有的finally子句通常用於關閉因異常而不能釋放的系統資源。
try:
f = open("hello.txt", "r")
try:
print f.read(5)
except:
print "讀文件異常"
finally:
print "釋放資源"
f.close()
except IOError:
print "文件不存在"
使用raise拋出異常
當程序出現錯誤,python會自動引發異常,也可以通過raise顯示地引發異常。一旦執行了raise語句,raise後面的語句將不能執行。
演示raise用法
try:
s = None
if s is None:
print "s 是空對象"
raise NameError #如果引發NameError異常,後面的代碼將不能執行
print len(s)
except TypeError:
print "空對象沒有長度"
自定義異常
python允許程序員自定義異常,用於描述python中沒有涉及的異常情況,自定義異常必須繼承Exception類,自定義異常按照命名規范以"Error"結尾,顯示地告訴程序員這是異常。自定義異常使用raise語句引發,而且只能通過人工方式觸發。
from __future__ import division
class DivisionException(Exception):
def __init__(self, x, y):
Exception.__init__ (self, x, y) #調用基類的__init__進行初始化
self.x = x
self.y = y
if __name__ == "__main__":
try:
x = 3
y = 2
if x % y > 0: #如果大於0, 則不能被初始化,拋出異常
print x/y
raise DivisionException(x, y)
except DivisionException,div: #div 表示DivisionException的實例對象
print "DivisionExcetion: x/y = %.2f" % (div.x/div.y)
assert語句的使用
assert語句用於檢測某個條件表達式是否為真。assert語句又稱為斷言語句,即assert認為檢測的表達式永遠為真,if語句中的條件判斷都可以使用assert語句檢測。
『肆』 python編程try。。raise的問題
因為raise就是拋出錯誤的意思
『伍』 python raise 後程序閃退
退出重進一下。
請檢查iOS設備是否有足夠容量空間,刪除不需要文件或應用程序重新安裝,檢查應用程序是否支持iOS設備固件版本,應用程序包數據丟失或不完整導致安裝失敗,重新下載一次再安裝。
修復閃退功能只支持iOS5和iOS6系統,修復時請保持手機一直處於WIFI接連狀態,在良好WIFI網路環境下重新修復一次。
『陸』 python有哪些控制語句
控制語句:
if語句,當條件成立時運行語句塊。經常與else, elif(相當於else if) 配合使用。
for語句,遍歷列表、字元串、字典、集合等迭代器,依次處理迭代器中的每個元素。
while語句,當條件為真時,循環運行語句塊。
try語句,與except,finally配合使用處理在程序運行中出現的異常情況。
class語句,用於定義類型。
def語句,用於定義函數和類型的方法。
pass語句,表示此行為空,不運行任何操作。
assert語句,用於程序調試階段時測試運行條件是否滿足。
with語句,Python2.6以後定義的語法,在一個場景中運行語句塊。比如,運行語句塊前加密,然後在語句塊運行退出後解密。
yield語句,在迭代器函數內使用,用於返回一個元素。自從Python 2.5版本以後。這個語句變成一個運算符。
raise語句,製造一個錯誤。
import語句,導入一個模塊或包。
from … import語句,從包導入模塊或從模塊導入某個對象。
import … as語句,將導入的對象賦值給一個變數。
in語句,判斷一個對象是否在一個字元串/列表/元組里。
『柒』 python raise觸發異常為什麼沒有列印錯誤
題主你好,
先說結果吧: 題主的代碼沒有問題, StopIteration異常也被拋出了.
下面說一下for循環從迭代器取值的邏輯題主應該就明白了:
正常情況下, for從迭代器中取值時, 在將迭代器中的元素消耗盡了以後, 迭代器都會拋出一個StopIteration異常給for語句, for語句檢測到StopIteration異常後就知道迭代器不會再返回內容了, 也就將for循環給結束掉了, 也就是說StopIteration是被for循環內部消耗掉了, 你可以這樣理解:
上面代碼的執行過程是這樣的:
將[1,2,3]中的1賦給x,輸出1;
將[1,2,3]中的2賦給x,輸出2;
將[1,2,3]國的3賦給x,輸出3;
拋出StopIteration異常, for檢測到StopIteration異常,結束for循環;
-------------
明白了上面的邏輯後, 題主也可以驗證一下, 題主可以將if語句給注釋掉, 然後執行一下, 看看輸出結果.
希望可以幫到題主, 歡迎追問.
有錯誤也請指出, 謝謝!
『捌』 python3的raise有traceback這個參數嗎如果有的話怎麼用
這個實際上是沒有這個參數的,只不過有很多人在虛構出來的。
『玖』 python3 函數 用 try except finally 和 raise
網路上一些文章(如《PYTHON編程金典讀書筆記》、《PYTHON中的finally》)都講述try finally與try except不能同時使用,若同時使用,就會出現語法錯誤。根據我的調查,這些說法早已不合時宜,如本人撰寫此文對這個說明修正一下:《PYTHON核心編程》第二版提到,自PYTHON 2.5開始,你可以用 finally 子句與 try-except 或 try-except-else 一起使用.下面是 try-except-else-finally 語法的示例: try: A except MyException: B else: C finally: D 等價於 Python 0.9.6 至 2.4.x 中如下的寫法: try: try: A Edit By Vheavens Edit By Vheavens except MyException: B else: C finally: D 歡迎訪問我的小站:程序員的財富理想