㈠ 求教深度學習python代碼報錯問題from numpy import random, dot,
摘要 python標准異常
㈡ python3 中的try... except Exception,e: ...怎麼不能用了變成什麼了呢
語法錯誤,應該改成下列語法:
python3 中捕捉異常需要使用try/except語句,具體格式如下:
try:
<語句> #運行別的代碼
except <名字>:
<語句> #如果在try部份引發了'name'異常
except <名字>,<數據>:
<語句> #如果引發了'name'異常,獲得附加的數據
else:<語句> #如果沒有異常發生
編輯如下:
「拓展資料「:
try的工作原理是,當開始一個try語句後,python就在當前程序的上下文中作標記,這樣當異常出現時就可以回到這里,try子句先執行,接下來會發生什麼依賴於執行時是否出現異常。
如果當try後的語句執行時發生異常,python就跳回到try並執行第一個匹配該異常的except子句,異常處理完畢,控制流就通過整個try語句(除非在處理異常時又引發新的異常)。
如果在try後的語句里發生了異常,卻沒有匹配的except子句,異常將被遞交到上層的try,或者到程序的最上層(這樣將結束程序,並列印預設的出錯信息)。
如果在try子句執行時沒有發生異常,python將執行else語句後的語句(如果有else的話),然後控制流通過整個try語句。
㈢ python 中的out of memory是怎麼回事,內存不夠嗎
這不是你電腦內存大小的問題,
在編程中,如果在一個域中輸入的數據超過了它的要求就會引發數據溢出問題。
緩沖區溢出好比是將十磅的糖放進一個只能裝五磅的容器里。一旦該容器放滿了,餘下的部分就溢出在櫃台和地板上,弄得一團糟。由於計算機程序的編寫者寫了一些編碼,但是這些編碼沒有對目的區域或緩沖區——五磅的容器——做適當的檢查,看它們是否夠大,能否完全裝入新的內容——十磅的糖,結果可能造成緩沖區溢出的產生。如果打算被放進新地方的數據不適合,溢得到處都是,該數據也會製造很多麻煩。但是,如果緩沖區僅僅溢出,這只是一個問題。到此時為止,它還沒有破壞性。當糖溢出時,櫃台被蓋住。可以把糖擦掉或用吸塵器吸走,還櫃台本來面貌。與之相對的是,當緩沖區溢出時,過剩的信息覆蓋的是計算機內存中以前的內容。除非這些被覆蓋的內容被保存或能夠恢復,否則就會永遠丟失。
具體你可以看下邊的資料。
㈣ 內存溢出錯誤怎麼解決
你好,內存溢出可能是病毒作怪,也有可能是程序錯誤.
內存溢出是指系統內存全部被佔用,沒有可用內存分配給新啟動的任務的情況,通常不會導致系統崩潰。
可以擴展一條內存,或者增大虛擬內存的大小
下面以在Windows XP下轉移虛擬內存所在盤符為例介紹虛擬內存的設置方法:
一、手動設置虛擬內存
在默認狀態下,是讓系統管理虛擬內存的,但是系統默認設置的管理方式通常比較保守,在自動調節時會造成頁面文件不連續,而降低讀寫效率,工作效率就顯得不高,於是經常會出現「內存不足」這樣的提示,下面就讓我們自已動手來設置它吧。
①用右鍵點擊桌面上的「我的電腦」圖標,在出現的右鍵菜單中選擇「屬性」選項打開「系統屬性」窗口。在窗口中點擊「高級」選項卡,出現高級設置的對話框.
②點擊「性能」區域的「設置」按鈕,在出現的「性能選項」窗口中選擇「高級」選項卡,打開其對話框。
③在該對話框中可看到關於虛擬內存的區域,點擊「更改」按鈕進入「虛擬內存」的設置窗口。選擇一個有較大空閑容量的分區,勾選「自定義大小」前的復選框,將具體數值填入「初始大
二、量身定製虛似內存
1.普通設置法
根據一般的設置方法,虛擬內存交換文件最小值、最大值同時都可設為內存容量的1.5倍,但如果內存本身容量比較大,比如內存是512MB,那麼它佔用的空間也是很可觀的。所以我們可以這樣設定虛擬內存的基本數值:內存容量在256MB以下,就設置為1.5倍;在512MB以上,設置為內存容量的一半;介於256MB與512MB之間的設為與內存容量相同值。
2.精準設置法
由於每個人實際操作的應用程序不可能一樣,比如有些人要運行3DMAX、Photoshop等這樣的大型程序,而有些人可能只是打打字、玩些小游戲,所以對虛擬內存的要求並不相同,於是我們就要因地制宜地精確設置虛擬內存空間的數值。
①先將虛擬內存自定義的「初始大小」、「最大值」設為兩個相同的數值,比如500MB;
②然後依次打開「控制面板→管理工具→性能」,在出現的「性能」對話框中,展開左側欄目中的「性能日誌和警報」,選中其下的「計數器日誌」,在右側欄目中空白處點擊右鍵,選擇右鍵菜單中的「新建日誌設置」選項;
③在彈出的對話框「名稱」一欄中填入任意名稱,比如「虛擬內存測試」。在出現窗口中點擊「添加計數器」按鈕進入下一個窗口;
④在該窗口中打開「性能對象」的下拉列表,選擇其中的「Paging File」,勾選「從列表中選擇計數器」,並在下方的欄目中選擇「%Usage Peak」;勾選「從列表中選擇範例」,在下方的欄目中選擇「_Total」,再依次點擊「添加→關閉」結束
⑥在右側欄目中可以發現多了一個「虛擬內存測試」項目,如果該項目為紅色則說明還沒有啟動,點擊該項,選擇右鍵菜單中的「啟動」選項即可
接下來運行自己常用的一些應用程序,運行一段時間後,進入日誌文件所在的系統分區下默認目錄「PerfLogs」,找到「虛擬內存測試_000001.csv」並用記事本程序打開它,在該內容中,我們查看每一欄中倒數第二項數值,這個數值是虛擬內存的使用比率,找到這項數值的最大值,比如圖中的「46」,用46%乘以500MB(前面所設定的虛擬內存數值),得出數值為230MB。
用該數值可以將初始大小設為230MB,而最大值可以根據磁碟空間大小自由設定,一般建議將它設置為最小值的2到3倍。這樣我們就可以將虛擬內存打造得更精準,使自己的愛機運行得更加流暢、更具效率。
小」、「最大值」欄中,而後依次點擊「設置→確定」按鈕即可,最後重新啟動計算機使虛擬內存設置生效。
建議:可以劃分出一個小分區專門提供給虛擬內存、IE臨時文件存儲等使用,以後可以對該分區定期進行磁碟整理,從而能更好提高計算機的工作效率。
三、Windows虛擬內存加速密籍
虛擬內存對於任何版本的Windows而言都是十分重要的。如果設置得當,它將極大地提升電腦的性能和運行速度。可是在默認狀態下,Windows始終將虛擬內存設為物理內存的1.5倍。這樣的話,如果用戶安裝2GB的內存,系統就會騰出高達3GB的硬碟空間作為虛擬內存。但以當前的主流應用軟體和游戲對內存的需要來看,根本沒有必要使用這么多的虛擬內存。那麼,有沒有什麼秘技或絕招可使虛擬內存運用得更有效率或更顯性能呢?
1、分割存於多個硬碟
將虛擬內存設在較快的硬碟上,的確可使虛擬內存的運作更有效率。但是若電腦上兩個硬碟速度一樣快,則應將虛擬內存平均分配在兩個不同的硬碟上(並非同一硬碟的不同分區)。因為同步進行讀寫操作會更有效地提高系統整體的虛擬內存性能。
舉個例子,假設你原本在硬碟C上設置了700MB的虛擬內存,現在你可嘗試重新分配,即把硬碟C改為350MB,硬碟D新增350MB的虛擬內存。理論上這樣做會加快虛擬內存整體的讀寫操作.
2、硬碟需有足夠空間
如果你不是很有經驗的電腦用戶,又或者沒有特殊的使用要求,在Windows XP中選擇「系統管理的大小」的方法來自動處理虛擬內存,一般情況下應該會比選擇「自定義大小」的方法來得安全和穩定。不過,有一點大家必須注意,由於虛擬內存的「頁面文件」(pagefile.sys)會隨著電腦使用過程進行收縮和擴展,為使系統管理虛擬內存能夠進行得順利和更具彈性,我們必須保證分頁文件所在的硬碟擁有足夠的可用空間。
3、最小值等於最大值
選擇「自定義大小」的方法來處理虛擬內存,並將最大值和最小值都設為同一數值。有很多人都相信用這種方法來處理虛擬內存有助於提高系統的性能。他們所持的理由是,當最大值和最小值都相等時,系統無需時刻進行收縮和擴展頁面文件的動作。省去了這些工作,相應地就是提高系統效率。
這種方法,很多人堅信有效,但同樣地,也有人指出其實並沒有效果。但不管怎樣也好,如要將最大值和最小值設為相等,我們必須堅守一個原則,那就是虛擬內存的大小必須足夠,否則系統輕則會出現效率下降(要進行更多復寫動作來騰出空間),嚴重的更會造成系統不穩定。
4、整理頁面文件
文件數據保存在硬碟上久了,文件碎片(fragment)自然會產生。要保持或提高硬碟的工作效率,我們應不時為硬碟進行一次碎片整理。所謂虛擬內存,其實也是硬碟上的資料文件,那麼虛擬內存是否也應該像普通文件般需要整理呢?
Windows系統處理頁面文件(即虛擬內存)的方法有別於一般的文件。相比之下,頁面文件比一般文件更少出現碎片,為頁面文件進行整理通常是沒有必要的。事實上,當Windows XP進行磁碟碎片整理時,頁面文件不會牽涉其中。
雖然Windows不會對頁面文件進行整理,但事實上頁面文件也有碎片存在。追求「盡善盡美」的朋友可能仍想對頁面文件進行碎片整理。大家不妨試試下面的方法:
在桌面「我的電腦」圖標上單擊滑鼠右鍵,在隨後出現的功能菜單中選「屬性」。進入系統屬性的設置窗口,用滑鼠點選「高級」-->「性能」-->「設置」-->「高級」-->「更改」,在隨後出現的「虛擬內存」設置窗口中選中「無分頁文件」一項。最後單擊「設置」按鈕退出,並重新啟動電腦。
重新啟動後,檢查一下磁碟根目錄中還有沒有pagefile.sys頁面文件存在,如有就將之刪除。清除掉虛擬內存的頁面文件後,現在我們再進行磁碟碎片整理。完成後,按照前面的步驟重新設置一定數量的虛擬內存,並啟動電腦使之生效。經上述方法處理後,新得出的頁面文件將會是沒有碎片的。
另外,如果想查看頁面文件碎片的具體情況呢?啟動磁碟碎片整理程序,為存在有頁面文件的硬碟進行一次「分析」,再點選「查看報告」,看看「頁面文件碎片」一欄便會一目瞭然。
四、虛擬內存的理想大小及准確定位
1、虛擬內存的理想大小
想以「自定義大小」的方法來處理虛擬內存,究竟應該設置多大的虛擬內存呢?在Windows XP中,如果由操作系統自己定義虛擬內存,系統通常會把最小值設置為物理內存的1.5倍。當擴展時,最大值則介於物理內存的2.5至3倍。一般情況下,用戶想自定義虛擬內存的大小,均可參照這個比例設置。
真的要參照這個比例嗎?如果我的電腦上有1GB的內存,難不成最小值要設置為1.5GB,最大值是2.5至3GB。這樣一來。Pagefile.sys頁面文件至少為1.5GB,太不現實了!
其實,大內存的系統跟小內存的系統相比,在設置虛擬內存時,標准有些不同。
如果大家有512MB以上甚至1GB的內存,既然物理內存已經相當充足,所需的虛擬內存反而應該減少。故在大內存的系統中,虛擬內存的最小值可以設成物理內存的一半。比如有1GB的內存,虛擬內存的最小值設成512MB,最大值則維持3GB以備不時之需。注意:雖然最大值設為3GB,系統是不會立即出現3GB大小的pagefile.sys文件,實際上它首先會以最小值出現,待有擴展需要時才會遞增。
另外,有些大內存的朋友,可能會乾脆不設置虛擬內存,以此強迫系統使用速度較快的內存。其實這是不太明智的做法。正所謂凡事都不要做得太絕對,完全沒有虛擬內存也不行。原因是不少應用程序在設計時要求必須使用虛擬內存,沒有了就會造成系統不穩定或死機。
至於小內存的系統,例如256MB,參照1.5倍及3倍的設置比例最穩當。即虛擬內存最小值設為384MB,最大值768MB。
2、手工訂制最准確的虛擬內存
0.5倍、1.5倍、3倍,哇!好像買衣服時分大、中、小號,完全沒有個性。究竟設置虛擬內存有沒有更「貼身剪裁」的方法呢?
在Windows XP桌面的「開始」→「運行」中輸入perfmon.msc,一個與系統性能有關的監視器便會出現。看看顯示器的底部,有三個計數器(pages/sec、Avg.Disk Queue Length及rocessor Time,)。為了便於我們接下來對虛擬內存的頁面文件進行精確監測,現在請大家將這三個計數器逐一點選,並按鍵盤上的Delete鍵將它們刪除。請大家放心,刪除後,下次再啟動系統性能監視器時,這三個項目會重新出現。
刪除後,現在請在圖表中央位置單擊滑鼠右鍵,在隨後出現的功能菜單中點選「添加計數器」一項,跟著在跳出窗口的「性能對象」一欄選「Process」。之後再在「從列表選擇」一欄中點選「Page File Bytes」。不清楚「Page File Bytes」代表什麼意思,只要單擊「說明」按鈕,解說文字便會出現在對話框之下。
選定「Page File Bytes」後,再在右方的「從列表選擇範例」一欄選取「Total」項,之後依次單擊「添加」和「關閉」按鈕,一個名為「Page File Bytes」的計數器便會出現在性能監視器的下方中。
重復以上的動作,再添加一個名為「Page File Bytes Peak」的計數器(即Process下面的Page File Bytes Peak)。
現在,回頭看一下監視器,圖表中應該正在顯示並計量著剛才新增加的兩個計數器。如無意外,這兩個計數器在圖表上的顯示不正確,即數值靠近最高比例線,沒有動態變化。不用怕,這並不表示你的電腦出了什麼問題,而是圖表比例設得不太恰當而已!用滑鼠右鍵逐一單擊監視器底部的「Page Fele Bytes」和「Page File By8tes Peak」計數器,並選「屬性」一項。在「數據」頁面的「比例」一欄中改為0.0000001,這樣顯示器中的圖表便不再是沒有動靜了。
如果你看過系統提供的說明,相信應該知道「Page File Bytes」和「Page File Bytes Peak」正是代表了系統監測期間所使用的虛擬內存及其峰值是多大。因此,需要精確地手工設置虛擬內存,可參考圖表下方顯示的數字,其單位是Bytes
想知道在正常的情況下,你的系統會耗用多少虛擬內存?請將平時日常使用的應用軟體同時啟動並讓它們開始工作,接著再看性能監視器上所顯示的數值,心中有數了吧。
人總有瘋狂的時候,想知道自己瘋狂使用電腦時系統需要多少虛擬內存,現在就盡情地將電腦上的程序啟動並運行(例如,開十多個IE瀏覽器窗口上網,播放MP3和DVD影片,再進行光碟刻錄或DV影片壓縮編碼),看看監視器的百分比會升高到多少。
在圖表上右擊滑鼠,點選「屬性」,進入「圖表」頁面勾選「水平格線」一項。這樣圖表中會出現一條條的水平分割線,是不是好分辨了?
圖表中的紅色垂直線跑得太快,來不及開啟電腦上的程序進行測試?
同樣,在圖表上單擊滑鼠右鍵,選「屬性」,在常規頁面的「自動抽樣間隔」一項中將1秒改為5秒。此時,圖表中的「圖形時間」數值便會由1分40秒變成8分20秒。換言之,紅色垂直線走完一圈需花費8分20秒,這個時間應該足以讓大家開啟並運行很多應用程序,然後再慢慢查看圖表中的結果。
最後,通過監視器的圖表,相信大家已經能粗略估計你的電腦系統應設置多大的虛擬內存了。
五、出現「虛擬內存不夠」的幾個可能
1、感染病毒
有些病毒發作時會佔用大量內存空間,導致系統出現內存不足的問題。趕快去殺毒,升級病毒庫,然後把防毒措施做好!
2、虛擬內存設置不當
虛擬內存設置不當也可能導致出現內存不足問題,一般情況下,虛擬內存大小為物理內存大小的2倍即可,如果設置得過小,就會影響系統程序的正常運行。重新調整虛擬內存大小以WinXP為例,右鍵點擊「我的電腦」,選擇「屬性」,然後在「高級」標簽頁,點擊「性能」框中的「設置」按鈕,切換到「高級」標簽頁,然後在「虛擬內存」框中點擊「更改」按鈕,接著重新設置虛擬內存大小,完成後重新啟動系統就好了。
3、系統空間不足
虛擬內存文件默認是在系統盤中,如WinXP的虛擬內存文件名為「pagefile.sys」,如果系統盤剩餘空間過小,導致虛擬內存不足,也會出現內存不足的問題。系統盤至少要保留300MB剩餘空間,當然這個數值要根據用戶的實際需要而定。用戶盡量不要把各種應用軟體安裝在系統盤中,保證有足夠的空間供虛擬內存文件使用,而且最好把虛擬內存文件安放到非系統盤中。
4、因為SYSTEM用戶許可權設置不當
基於NT內核的Windows系統啟動時,SYSTEM用戶會為系統創建虛擬內存文件。有些用戶為了系統的安全,採用NTFS文件系統,但卻取消了SYSTEM用戶在系統盤「寫入」和「修改」的許可權,這樣就無法為系統創建虛擬內存文件,運行大型程序時,也會出現內存不足的問題。問題很好解決,只要重新賦予SYSTEM用戶「寫入」和「修改」的許可權即可,不過這個僅限於使用NTFS文件系統的用戶。
六、虛擬內存的優化
1. 啟用磁碟寫入緩存
在「我的電腦」上單擊滑鼠右鍵選擇「屬性->硬體」,打開設備管理器找到當前正在使用的硬碟,單擊滑鼠右鍵選擇屬性。在硬碟屬性的的「策略」頁中,打開「啟用磁碟上的寫入緩存」。
這個選項將會激活硬碟的寫入緩存,從而提高硬碟的讀寫速度。不過要注意一點,這個功能打開後,如果計算機突然斷電可能會導致無法挽回的數據丟失。因此最好在有UPS的情況下再打開這個功能。當然,如果你平常使用計算機時不要進行什麼重要的數據處理工作,沒有UPS也無所謂,這個功能不會對系統造成太大的損失。
2. 打開Ultra MDA
在設備管理其中選擇IDE ATA/ATAPI控制器中的「基本/次要IDE控制器」,單擊滑鼠右鍵選擇「屬性」,打開「高級設置」頁。這里最重要的設置項目就是「傳輸模式」,一般應當選擇「DMA(若可用)」。
3. 配置恢復選項
Windows XP 運行過程中碰到致命錯誤時會將內存的快照保存為一個文件,以便進行系統調試時使用,對於大多數普通用戶而言,這個文件是沒有什麼用處的,反而會影響虛擬內存的性能。所以應當將其關閉。
在「我的電腦」上單擊滑鼠右鍵,選擇「屬性->高級」,在「性能」下面單擊「設置」按鈕,在「性能選項」中選擇「高級」頁。這里有一個「內存使用」選項,如果將其設置為「系統緩存」,Windows XP 將使用約4MB的物理內存作為讀寫硬碟的緩存,這樣就可以大大提高物理內存和虛擬內存之間的數據交換速度。默認情況下,這個選項是關閉的,如果計算機的物理內存比較充足,比如256M或者更多,最好打開這個選項。但是如果物理內存比較緊張,還是應當保留默認的選項。
七、頁面文件的設置
1、頁面文件的大小計算
對於不同的計算機而言,頁面文件的大小是各不相同的。關於頁面文件大小的設置,有兩個流傳甚廣的「公式」,「物理內存X2.5」或者「物理內存X1.5」。這兩種計算方法固然簡便,但是並不適用於所有的計算機。設置頁面文件大小最准確的方法是看看計算機在平常運行中實際使用的頁面文件大小。
通過Windows XP自帶的日誌功能可以監視計算機平常使用的頁面文件的大小,從而進行最准確的設置,具體步驟如下。
一、在「我的電腦」上單擊滑鼠右鍵,選擇「屬性->高級」,單擊「性能」下面的「設置」按鈕,然後選擇「高級」頁,單擊「虛擬內存」下方的「更改」按鈕。選擇「自定義大小」,並將「起始大小」和「最大值」都設置為300M,這只是一個臨時性的設置。設置完成後重新啟動計算機使設置生效。
二、進入「控制面板->性能與維護->管理工具」,打開「性能」,展開「性能日誌和警告」,選擇「計數器日誌」。在窗口右側單擊滑鼠右鍵選擇「新建日誌設置」
三、隨便設置一個日誌名稱,比如「監視虛擬內存大小」。
四、在「常規」頁中單擊「添加計數器」按鈕。
在「性能對象」中選擇「Paging File」,然後選中「從列表選擇記數器」下面的「%Usage Peak」,並在右側「從列表中選擇範例」中選擇「_Total」。最後單擊「添加」和「關閉」按鈕。
五、別忘了記住「日誌文件」頁中的日誌文件存放位置和文件名,我們後面需要查看這個日誌來判斷Windows XP平常到底用了多少虛擬內存,在這個例子中,日誌文件被存放在D:Perflog目錄下。
另外還要設置「日誌文件類型」為「文本文件」,這樣便於閱讀。
這時你可以看到剛才新建的日誌條目前面的圖標變成了綠色,這表明日誌系統已經在監視虛擬內存了。如果圖標還是紅色,你應該單擊滑鼠右鍵選擇「開始」來啟動這個日誌。
過一段時間後打開這個CVS文件,我們可以看到如下內容的條目。
這個日誌文件記錄這一段時間中頁面文件的使用情況,注意這里的單位是%,而不是MB。通過簡單的計算,我們就可以得到頁面文件的最小尺寸,公式是「頁面文件尺寸X百分比」。比如這個例子中,虛擬內存最大的使用比率是31%,300MBX31%=93MB,這個值就是虛擬內存的最小值(注意,300MB是前面的設置的臨時值)。
如果物理內存較大,可以考慮將頁面文件的「起始大小」和「最大值」設置為相等,等於上一步中計算出來的大小。這樣硬碟中不會因為頁面文件過渡膨脹產生磁碟碎片,其副作用是由於「最大值」被設置的較小,萬一偶然出現虛擬內存超支的情況,可能會導致系統崩潰。
2、設置頁面文件
現在回到「虛擬內存」的設置對話框中選擇自定義大小並按照上面的計算結果分別設置「初始大小」和「最大值」。這里我們將「初始大小」設置為91M,而將「最大值」設置成了200M,這樣比較保險
3、對頁面文件進行碎片整理
Windows XP運行時需要大量訪問頁面文件,如果頁面文件出現碎片,系統性能將會受到嚴重影響,而且會縮短硬碟的使用壽命。所以我們很有必要對頁面文件定期進行碎片整理。
不過別忘了,頁面文件是系統關鍵文件,Windows XP運行時無法對其進行訪問。所以對它進行碎片整理並不是一件容易的事情。我們有兩種方案可以選擇,一是安裝Windows雙系統,然後啟動另外一個Windows對Windows XP所在的分區進行碎片整理。二是使用專門的工具軟體,比如System File Defragmenter等。
參考文獻:http://iask.sina.com.cn/b/11733461.html
㈤ 如何解決python的out of memory問題
python是64位的嗎?
㈥ python錯誤
異常名稱 異常說明
AssertionError 斷言語句(assert)失敗
AttributeError 嘗試訪問未知的對象屬性
EOFError 用戶輸入文件末尾標志EOF(Ctrl+d)
FloatingPointError 浮點計算錯誤
GeneratorExit generator.close()方法被調用的時候
ImportError 導入模塊失敗的時候
IndexError 索引超出序列的范圍
KeyError 字典中查找一個不存在的關鍵字
KeyboardInterrupt 用戶輸入中斷鍵(Ctrl+c)
MemoryError 內存溢出(可通過刪除對象釋放內存)
NameError 嘗試訪問一個不存在的變數
NotImplementedError 尚未實現的方法
OSError 操作系統產生的異常(例如打開一個不存在的文件)
OverflowError 數值運算超出最大限制
ReferenceError 弱引用(weak reference)試圖訪問一個已經被垃圾回收機制回收了的對象
RuntimeError 一般的運行時錯誤
StopIteration 迭代器沒有更多的值
SyntaxError Python的語法錯誤
IndentationError 縮進錯誤
TabError Tab和空格混合使用
SystemError Python編譯器系統錯誤
SystemExit Python編譯器進程被關閉
TypeError 不同類型間的無效操作
UnboundLocalError 訪問一個未初始化的本地變數(NameError的子類)
UnicodeError Unicode相關的錯誤(ValueError的子類)
UnicodeEncodeError Unicode編碼時的錯誤(UnicodeError的子類)
UnicodeDecodeError Unicode解碼時的錯誤(UnicodeError的子類)
UnicodeTranslateError Unicode轉換時的錯誤(UnicodeError的子類)
ValueError 傳入無效的參數
ZeroDivisionError 除數為零
㈦ python異常值處理
如果你用 Python 編程,那麼你就無法避開異常,因為異常在這門語言里無處不在。打個比方,當你在腳本執行時按 ctrl+c 退出,解釋器就會產生一個 KeyboardInterrupt 異常。而 KeyError、ValueError、TypeError 等更是日常編程里隨處可見的老朋友。
異常處理工作由「捕獲」和「拋出」兩部分組成。「捕獲」指的是使用 try ... except 包裹特定語句,妥當的完成錯誤流程處理。而恰當的使用 raise 主動「拋出」異常,更是優雅代碼里必不可少的組成部分。
異常分類
BaseException所有異常的基類
Exception常見錯誤的基類
ArithmeticError所有數值計算錯誤的基類
Warning警告的基類
AssertError斷言語句(assert)失敗
AttributeError嘗試訪問未知的對象屬性
DeprecattionWarning關於被棄用的特徵的警告
EOFError用戶輸入文件末尾標志EOF(Ctrl+d)
FloattingPointError浮點計算錯誤
FutureWarning關於構造將來語義會有改變的警告
GeneratorExitgenerator.close()方法被調用的時候
ImportError導入模塊失敗的時候
IndexError索引超出序列的范圍
KeyError字典中查找一個不存在的關鍵字
KeyboardInterrupt用戶輸入中斷鍵(Ctrl+c)
MemoryError內存溢出(可通過刪除對象釋放內存)
NamerError嘗試訪問一個不存在的變數
NotImplementedError尚未實現的方法
OSError操作系統產生的異常(例如打開一個不存在的文件)
OverflowError數值運算超出最大限制
OverflowWarning舊的關於自動提升為長整型(long)的警告
PendingDeprecationWarning關於特徵會被遺棄的警告
ReferenceError弱引用(weakreference)試圖訪問一個已經被垃圾回收機制回收了的對象
RuntimeError一般的運行時錯誤
RuntimeWarning可疑的運行行為(runtimebehavior)的警告
StopIteration迭代器沒有更多的值
SyntaxErrorPython的語法錯誤
SyntaxWarning可疑的語法的警告
IndentationError縮進錯誤
TabErrorTab和空格混合使用
SystemErrorPython編譯器系統錯誤
SystemExitPython編譯器進程被關閉
TypeError不同類型間的無效操作
UnboundLocalError訪問一個未初始化的本地變數(NameError的子類)
UnicodeErrorUnicode相關的錯誤(ValueError的子類)
UnicodeEncodeErrorUnicode編碼時的錯誤(UnicodeError的子類)
UnicodeDecodeErrorUnicode解碼時的錯誤(UnicodeError的子類)
UserWarning用戶代碼生成的警告
ValueError傳入無效的參數
ZeroDivisionError除數為零
㈧ Python中程序異常都能被處理嗎
「異常」是Python對象,表示一個錯誤。
如果不想出現異常後程序自動停止運行,編程的人,就要主動捕捉異常,並自己作出相應處理。
捕捉異常可以使用try/except語句。
try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常信息並處理。
下面是try/except的示例,說明了怎樣處理各種異常:
try:
<語句> #運行別的代碼
except <名字>:
<語句> #如果在try部份引發了'name'異常
except <名字>,<數據>:
<語句> #如果引發了'name'異常,獲得附加的數據
else:
<語句> #如果沒有異常發生
Python的各種標准異常是預先定義好的。基本上包括了常見的異常情況,主要有以下內容。
異常名稱 描述
BaseException 所有異常的基類
SystemExit 解釋器請求退出
KeyboardInterrupt 用戶中斷執行(通常是輸入^C)
Exception 常規錯誤的基類
StopIteration 迭代器沒有更多的值
GeneratorExit 生成器(generator)發生異常來通知退出
StandardError 所有的內建標准異常的基類
ArithmeticError 所有數值計算錯誤的基類
FloatingPointError 浮點計算錯誤
OverflowError 數值運算超出最大限制
ZeroDivisionError 除(或取模)零 (所有數據類型)
AssertionError 斷言語句失敗
AttributeError 對象沒有這個屬性
EOFError 沒有內建輸入,到達EOF 標記
EnvironmentError 操作系統錯誤的基類
IOError 輸入/輸出操作失敗
OSError 操作系統錯誤
WindowsError 系統調用失敗
ImportError 導入模塊/對象失敗
LookupError 無效數據查詢的基類
IndexError 序列中沒有此索引(index)
KeyError 映射中沒有這個鍵
MemoryError 內存溢出錯誤(對於Python 解釋器不是致命的)
NameError 未聲明/初始化對象 (沒有屬性)
UnboundLocalError 訪問未初始化的本地變數
ReferenceError 弱引用(Weak reference)試圖訪問已經垃圾回收了的對象
RuntimeError 一般的運行時錯誤
NotImplementedError 尚未實現的方法
SyntaxError Python 語法錯誤
IndentationError 縮進錯誤
TabError Tab 和空格混用
SystemError 一般的解釋器系統錯誤
TypeError 對類型無效的操作
ValueError 傳入無效的參數
UnicodeError Unicode 相關的錯誤
UnicodeDecodeError Unicode 解碼時的錯誤
UnicodeEncodeError Unicode 編碼時錯誤
UnicodeTranslateError Unicode 轉換時錯誤
Warning 警告的基類
DeprecationWarning 關於被棄用的特徵的警告
FutureWarning 關於構造將來語義會有改變的警告
OverflowWarning 舊的關於自動提升為長整型(long)的警告
PendingDeprecationWarning 關於特性將會被廢棄的警告
RuntimeWarning 可疑的運行時行為(runtime behavior)的警告
SyntaxWarning 可疑的語法的警告
UserWarning 用戶代碼生成的警告
Python系統處理異常就是提示一下,停止運行。不想停止,只有自己處理。
可以不帶類型,所有異常執行同一組語句:
try:
正常的操作
except:
發生異常,執行這塊代碼
else:
如果沒有異常執行這塊代碼
也可以多個異常共用一段代碼:
ry:
正常的操作
except(Exception1[, Exception2[,...ExceptionN]]]):
發生以上多個異常中的一個,執行這塊代碼
else:
如果沒有異常執行這塊代碼
還有一種格式,可以有finally部分:
try:
fh = open("testfile", "w")
try:
fh.write("這是一個測試文件,用於測試異常!!")
finally:
print "關閉文件"
fh.close()except IOError:
print "Error: 沒有找到文件或讀取文件失敗"
當在try塊中拋出一個異常,立即執行finally塊代碼。
finally塊中的所有語句執行後,異常被再次觸發,並執行except塊代碼。
參數的內容不同於異常。
除了標准異常,我們也可以自己定義異常,並進行處理,這時用到raise語句:
raise [Exception [, args [, traceback]]]
語句中 Exception 是異常的類型(例如,NameError)參數標准異常中任一種,args 是自已提供的異常參數。
最後一個參數是可選的(在實踐中很少使用),如果存在,是跟蹤異常對象。
相應的異常處理程序示例如下:
try:
正常語句,內含raise語句
except Exception,err:
觸發自定義異常
else:
其餘代碼