python 自定義異常和異常捕捉

2021-08-02 19:33:43 字數 1581 閱讀 5548

異常捕捉:

try: 

***xx1

raise exception(「***xx2」)

except (exception1,exception2,……):

***x3

else:

***xx4

finally:

******x5

1.raise 語句可以自定義報錯資訊,如上。

2. raise後的語句是不會被執行了,因為已經丟擲異常,控制流將會跳到異常捕捉模組。

3. except 語句可以乙個except後帶多個異常,也可以用多個語句捕捉多個異常,分別做不同處理。

4. except語句捕捉的異常如果沒有發生,那麼except裡的語句塊是不被執行的。而是執行else裡的語句

5. 在上面語句中try/except/else/finally所出現的順序必須是try–>except x–>except–>else–>finally,即所有的except必須在else和finally之前,else(如果有的話)必須在finally之前,而except x必須在except之前。否則會出現語法錯誤。

6.else和finally都是可選的.

7.在上面的完整語句中,else語句的存在必須以except x或者except語句為前提,如果在沒有except語句的try block中使用else語句會引發語法錯誤。

異常引數輸出:

try:

testraise()

except precondition***ception as e: #python3的寫法,必須用as

print (e)

自定義異常,只需自定義異常類繼承父類exception。在自定義異常類中,重寫父類init方法。

class

databaseexception

(exception):

def__init__

(self,err='資料庫錯誤'):

exception.__init__(self,err)

class

precondition***ception

(databaseexception):

def__init__

(self,err='preconditionserr'):

databaseexception.__init__(self,err)

deftestraise

():raise precondition***ception()

try:

testraise()

except precondition***ception as e:

print (e)

注意:preconditon***ception又是databaseexception的子類。

所以如果,raise preconditionexception的話,用兩個異常類都可以捕捉。

但是, 如果是raise databaseexception, 用preconditon***ception是捕捉不到的。

異常 自定義異常

package test 01 練習 計算成績的平均值 異常的情況 成績為負數 me 總結 練習寫好乙個程式,思路最重要要做到心中有數,當計算成績的平均值,定義乙個方法,最後這個方法返回平均數即可 關鍵在於 方法的引數是啥?返回值型別是啥?當然是乙個陣列 可變引數組int grades int型別 ...

異常 自定義異常

自己定義的異常類,也就是api中的標準異常類的直接或間接的子類 用自定義異常標記業務邏輯的異常,避免與標準異常混淆 1 建立自定義異常類 2 在方法中通過throw關鍵字拋出自定義異常 public class customexception extends exception 3 呼叫throws...

異常 自定義異常

throwable是所有異常的根。error是錯誤資訊,exception是異常資訊。error 是程式中無法處理的錯誤,表示執行應用程式 現了嚴重的錯誤。此類錯誤一般表示 執行時jvm出現問題。exception 程式本身可以捕獲並且可以處理的異常。捕獲異常 try,catch,finally 丟...