本文目錄一覽:
- 1、Python中程序異常都能被處理嗎?
- 2、為什麼電腦內存很大,python跑程序時卻說memory resource exhauted
- 3、pythonnohup顯存溢出
- 4、python如何處理內存溢出
- 5、python異常值處理
- 6、python錯誤?
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:
其餘代碼
為什麼電腦內存很大,python跑程序時卻說memory resource exhauted
要破這個東西,要先破你的演算法。 先別說破這個詞了。 梳理你的演算法,避免三重循環, 避免大量使用字典的多次嵌套。 顯然你的數據量巨大。還用這麼耗內存,耗CPU的演算法。只有演算法改良了才能解決這個問題。即使給你C語編程,你都能把內存用光了。…
pythonnohup顯存溢出
題主是否想問「pythonnohup顯存溢出怎麼辦」?
1、首先修改JVM啟動參數,直接堆內存(-Xms,-Xmx參數一定不要忘記加)。
2、其次檢查錯誤日誌,查看「OutOfMemory」錯誤前是否有其它異常或錯誤。
3、對代碼進行走查和分析,找出可能發生內存溢出的位置即可。
python如何處理內存溢出
內存溢出原因:
1.內存中載入的數據量過於龐大,如一次從資料庫取出過多數據;
2.集合類中有對對象的引用,使用完後未清空,產生了堆積,使得JVM不能回收;
3.代碼中存在死循環或循環產生過多重複的對象實體;
4.使用的第三方軟體中的BUG;
5.啟動參數內存值設定的過小。
內存溢出的解決方案:
第一步,修改JVM啟動參數,直接增加內存。(-Xms,-Xmx參數一定不要忘記加)。
第二步,檢查錯誤日誌,查看「OutOfMemory」錯誤前是否有其它異常或錯誤。
第三步,對代碼進行調查和分析,找出可能發生內存溢出的位置。
眾多python培訓視頻,盡在python學習網,歡迎在線學習!
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 關於構造將來語義會有改變的警告
GeneratorExit generator.close()方法被調用的時候
ImportError 導入模塊失敗的時候
IndexError 索引超出序列的範圍
KeyError 字典中查找一個不存在的關鍵字
KeyboardInterrupt 用戶輸入中斷鍵(Ctrl+c)
MemoryError 內存溢出(可通過刪除對象釋放內存)
NamerError 嘗試訪問一個不存在的變數
NotImplementedError 尚未實現的方法
OSError 操作系統產生的異常(例如打開一個不存在的文件)
OverflowError 數值運算超出最大限制
OverflowWarning 舊的關於自動提升為長整型(long)的警告
PendingDeprecationWarning 關於特徵會被遺棄的警告
ReferenceError 弱引用(weak reference)試圖訪問一個已經被垃圾回收機制回收了的對象
RuntimeError 一般的運行時錯誤
RuntimeWarning 可疑的運行行為(runtime behavior)的警告
StopIteration 迭代器沒有更多的值
SyntaxError Python的語法錯誤
SyntaxWarning 可疑的語法的警告
IndentationError 縮進錯誤
TabError Tab和空格混合使用
SystemError Python編譯器系統錯誤
SystemExit Python編譯器進程被關閉
TypeError 不同類型間的無效操作
UnboundLocalError 訪問一個未初始化的本地變數(NameError的子類)
UnicodeError Unicode相關的錯誤(ValueError的子類)
UnicodeEncodeError Unicode編碼時的錯誤(UnicodeError的子類)
UnicodeDecodeError Unicode解碼時的錯誤(UnicodeError的子類)
UserWarning 用戶代碼生成的警告
ValueError 傳入無效的參數
ZeroDivisionError 除數為零
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 除數為零
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/272182.html