第十二章 異常

2022-06-07 02:18:10 字數 2576 閱讀 7365

一、 異常的概念

錯誤: 編譯器

異常: 執行期, 程式沒有正常按照期望執行

異常產生時,在對應位置產生異常型別物件,程式「暫停」,如果上下文有異常處理程式,對應處理;

沒有則「異常向上傳播」,報錯退出;

【異常向上傳播】

> 如果異常在函式中產生,會傳播給函式的呼叫者

> 如果異常在模組的頂級位置,會傳播給引用該模組的模組

eg.def n()

print(1/0)

def a():

n()二、 異常的常見型別

1. baseexception    

--- 所有異常的父類

exception

--- 普遍異常,baseexception的子類,處理普遍的異常子類

(1) zerodivisionerror

除數為0的異常

(2) nameerror

名字錯誤異常,在命名空間中找不到丟擲異常

(3) typeerror

型別不匹配

(4) attributeerror

屬性異常

(5) indentationerror 

縮排異常

(6) indexerroe

索引越界異常

(7) unboundlocalerror

區域性變數訪問異常, 未初始化

(8) assertionerror

斷言異常,即斷言除錯時異常

(9)    importerror

模組不存在

(10)keyerror

字典中的key不存在

(11)referenceerror

遞迴異常

(12)syntaxerror

語法錯誤

(13)stopiteration

迭代終止異常

(14)valueerror

數值異常,如int('a')

三. 異常處理

1. try - expect

處理格式:

try:

可能產生異常的程式

except 異常型別1:

恢復措施

except 異常型別2:

恢復措施

……except 異常型別n:

恢復措施

注意:excrpt :

# 此時全部異常**獲

2. try - expect的處理情形:

(1)    try語句塊沒有產生異常

--- 沒有異常,繼續執行try-except之後的語句

(2)    try語句塊中產生異常,except捕獲了該異常

--- 執行先匹配成功的分支

--- 異常的合併,(異常型別1,異常型別2...)

(3)    try語句塊中產生異常,且except沒有捕獲該異常

--- 異常會繼續向上傳播(傳播給函式的呼叫端或模組的引入處)

注意:異常處理的時候,一般都是在呼叫端進行捕捉異常,以方便對異常進行不同的處理。

注意:> 不能捕捉的異常屬於編譯器出現的錯誤

> except分支之間存在繼承關係,需要將父類異常放在子類異常的後面

3. 異常中的finally和else

(1)    格式:

try:

可能異常

excepy 異常種類:

處理異常

else:

子句: 沒有異常時執行,有異常丟擲則不執行

finally:

子句: 無論有沒有丟擲異常都會執行

(2) 作用:

else: 

finally:    必須操作,如釋放資源、關閉檔案、關閉資料庫

eg.def fun():

x = 1

try:

return x

finally:

#① return 3

#② x = 2

fun()

如果:①    3    --- 如果兩個return, finally的覆蓋了前面的

②    1    --- 

4. 強制異常

(1) 格式

raise 異常型別

(2) 用法

a. except

b. 直接丟擲異常

eg1.

try:

1/0expert:

print('出現了除數為0的異常')

raise zerodivisionerror

eg2.

raise zerodivisionerror('除數為0的異常')

四、 自定義異常

格式:繼承自exception

重寫__init__

class myexception(exception):

def __init__(self.value):

self.value = value

# except 異常型別 as 變數:

變數會繫結異常物件

try 

raise myexception()

except myexception as err:

print(err.value)

第十二章 python異常

了解什麼是異常 掌握如何使用try.except語句捕獲異常 掌握try.except.else語句的應用 掌握try.except.finally語句的應用 掌握如何使用raise語句丟擲異常 掌握如何使用自帶的idle工具進行除錯 掌握如何使用assert語句除錯程式 12.1 異常概述 比如關...

第十二章 檔案

文字檔案 文字檔案是一種由若干字元構成的檔案,可以用文字編輯器進行閱讀或編輯。以txt py html等為字尾的檔案都是文字檔案。2.二進位制檔案 二進位制檔案一般是指不能用文字編輯器閱讀或編輯的檔案。以 mp4 png等為字尾的檔案都是二進位制檔案,如果想要開啟或修改這些檔案,必須通過特定軟體進行...

第十二章 dp

動態規劃策略 將原始問題拆分為多個子問題,將子問題結果記錄,方便復用子問題的解 遞迴 記憶化 遞推 是動態規劃的一體兩面,本質都是一樣的 遞推減少了呼叫次數,空間上還能優化,一般選擇遞推方式 遞迴 記憶化 int memo maxn 將o 2 n o n intfibonacci int n 遞推 ...