#異常
#檢測異常
try:
...#檢測范圍
except OSError as reason:
#出現異常后的處理代碼
print('文件出錯\n 出錯的原因是:' + str(reason))
except TypeError as reason:
print('類型出錯\n 出錯的原因是:' + str(reason))
except ValueError as reason:
print('值出錯\n 出錯的原因是:' + str(reason))
finally:
#無論如何都會被執(zhí)行的代碼
...
#引出一個異常
>>> raise ZeroDivisionError(除數為零的異常)
Traceback (most recent call last):
? File "<pyshell#16>", line 1, in <module>
? ? raise ZeroDivisionError(除數為零的異常)
NameError: name '除數為零的異常' is not defined
-> try:
...
except:
print("出錯了") #這樣做不推薦,有的出錯類型不會顯示 例如ctrl+c
-> try:
...
except(OSError,TypeError):
print("出錯了")
--------------------------------------------------------------------
#豐富的else語句
1.和 while 語句配合
def showMaxFactor(num):
? ? count = num //2
? ? while count > 1:
? ? ? ? if num % count == 0:
? ? ? ? ? ? print("%d最大的約數是%d" % (num,count))
? ? ? ? ? ? break
? ? ? ? count -= 1
? ? else:
? ? ? ? print("%d是素數!" % num)
num = int(input('請輸入一個數:'))
showMaxFactor(num)
2.和 for 語句配合(和while語句相同)
3.和 try except 語句配合
try:
? ? int('abc')
except ValueError as reason:
? ? print("出錯啦:" + str(reason))
else:
? ? print("沒有任何異常")
#簡潔的with語句
try:
? ? with = open('data.txt',w) as f:
? ? for each_line in f:
? ? ? ? print(each_line)
except OSError as reason:
? ? print('出錯:' + str(reason))
with 會自動調用f.close()語句
--------------------------------------------------------------------
#標準異??偨Y
ArithmeticError 所有數值計算錯誤的基類
AssertionError 斷言語句(assert)失敗
AttributeError 屬性錯誤,特性引用和賦值失敗時會引發(fā)屬性錯誤,嘗試訪問未知的對象屬性
BaseException 所有異常的基類
EOFError 用戶輸入文件末尾標志EOF(Ctrl+d)
DeprecationWarning 關于被棄用的特征的警告
Exception:所有異常的基類,因為所有python異常類都是基類Exception的其中一員,異常都是從基類Exception繼承的,并且都在exceptions模塊中定義。
EnvironmentError 操作系統(tǒng)錯誤的基類
FloatingPointError 浮點計算錯誤
FutureWarning 關于構造將來語義會有改變的警告
GeneratorExit generator.close()方法被調用的時候,生成器(generator)發(fā)生異常來通知退出
ImportError 導入模塊失敗的時候
IndexError 索引錯誤,使用的索引不存在,索引超出序列的范圍
IOError:一般常見于打開不存在文件時會引發(fā)IOError錯誤,也可以解理為輸出輸入錯誤
KeyError 字典中查找一個不存在的關鍵字時引發(fā)的關鍵字錯誤
KeyboardInterrupt 用戶輸入中斷鍵(Ctrl+c)
LookupError 無效數據查詢的基類
MemoryError 內存溢出(可通過刪除對象釋放內存,對于Python 解釋器不是致命的)
NameError 嘗試訪問一個不存在(未申明)的變量
NotImplementedError 尚未實現的方法
OSError 操作系統(tǒng)產生的異常(例如打開一個不存在的文件)
OverflowError 數值運算超出最大限制
OverflowWarning 舊的關于自動提升為長整型(long)的警告
PendingDeprecationWarning 關于特性將會被廢棄的警告
ReferenceError 弱引用(weak reference)試圖訪問一個已經被垃圾回收機制回收了的對象
RuntimeError 一般的運行時錯誤
RuntimeWarning 可疑的運行時行為(runtime behavior)的警告
StopIteration 迭代器沒有更多的值
SyntaxError Python的語法錯誤,代碼形式錯誤
SyntaxWarning 可疑的語法的警告
StandardError 所有的內建標準異常的基類
IndentationError 縮進錯誤
TabError Tab和空格混合使用
SystemError Python編譯器系統(tǒng)錯誤
SystemExit Python編譯器進程被關閉
TypeError 類型錯誤,內建操作或是函數應于在了錯誤類型的對象時會引發(fā)類型錯誤
UserWarning 用戶代碼生成的警告
UnboundLocalError 訪問一個未初始化的本地變量(NameError的子類)
UnicodeError Unicode相關的錯誤(ValueError的子類)
UnicodeEncodeError Unicode編碼時的錯誤(UnicodeError的子類)
UnicodeDecodeError Unicode解碼時的錯誤(UnicodeError的子類)
UnicodeTranslateError Unicode轉換時的錯誤(UnicodeError的子類)
ValueError 值錯誤,傳給對象的參數類型不正確
WindowsError 系統(tǒng)調用失敗
Warning 警告的基類
ZeroDivisionError 除數為零,在用除法操作時,第二個參數為0時引發(fā)了該錯誤