對異常類的理解

2021-09-25 01:43:31 字數 2066 閱讀 1263

1. 異常分類

異常分為:語法錯誤和異常

語法錯誤

語法錯誤通常自己書寫不規範等造成的規範上的錯誤

異常

異常通常由邏輯上的錯誤而造成的

比方說:除數為0等等

異常處理

while true:

try:

內容except valueerror:

print(『your value is error』)

while true:

try:

a=int(input('aaa:'))

break

except valueerror:

print('your value is error')

aaa:adfa

your value is error

aaa:13

首先執行try語句

如果報的異常的型別是except之後的異常型別就執行except

最後乙個except子句可以忽略異常的名稱,它將被當作萬用字元使用。你可以使用這種方法列印乙個錯誤資訊,然後再次把異常丟擲

可以有多個except或者多個異常型別,用,隔開

丟擲異常

python使用raise語句丟擲乙個異常

import sys

try:

f = open('myfile.txt')

s = f.readline()

i = int(s.strip())

except oserror as err:

print("os error: ".format(err))

except valueerror:

print("could not convert data to an integer.")

except:

print("unexpected error:", sys.exc_info()[0])

raise

try except 語句還有乙個可選的else子句,如果使用這個子句,那麼必須放在所有的except子句之後。這個子句將在try子句沒有發生任何異常的時候執行。

使用 else 子句比把所有的語句都放在 try 子句裡面要好,這樣可以避免一些意想不到的、而except又沒有捕獲的異常。

異常處理並不僅僅處理那些直接發生在try子句中的異常,而且還能處理子句中呼叫的函式(甚至間接呼叫的函式)裡丟擲的異常。

raise 唯一的乙個引數指定了要被丟擲的異常。它必須是乙個異常的例項或者是異常的類(也就是 exception 的子類)。

使用者自定義異常

所有的異常類都繼承exception,可以直接繼承或間接繼承

class myerror(exception):

def __init__(self,value):

self.value=value

def __str__(self):

print(self.value)

在這個例子中exception異常中的構造方法被重寫

當建立乙個模組可能丟擲多種不同的異常的時候,一種方法是為這個包建立乙個基礎異常類,然後基於這個基礎類為不同的錯誤情況建立不同的子類

定義清理行為

try:

except:

後面還可以選乙個可選的字句finally,他定義了無論任何情況都會執行的清理行為

不管try是否發生異常,finally都會執行

清理行為概念

就像在對檔案進行操作的時候,最後都需要對檔案進行關閉,這個關閉就是檔案的清理行為

丟擲異常和捕獲異常的概念

丟擲異常:方法本身不對這個異常進行處理,而只有在呼叫這個方法的時候進行處理

捕獲異常:在方法本身自己將異常進行處理

對類和物件的理解

物件是類的乙個例項,比如人類這個概念是類,具體到某個人就是物件 我知道類在寫程式的時候是class這個程式塊,但不知道程式塊裡面什麼可以被稱為物件,感覺在源 裡,類是乙個具體的概念,因為我知道class宣告的就是乙個類 物件反而成了抽象的了。我的理解 當你說 人類 的時候,它有姓名年齡身高體重等各種...

自己對Python 類的理解

class pet object 父類 類屬性 speed grow 0.02 def init self,age age 物件屬性 self.age age 類方法 classmethod defgrowth cls,time return cls.speed grow time 靜態方法 sta...

我對異常的理解 temp2

try的英文意思就是嘗試 例如 try to do sth.意思就是說嘗試著做一些事情,你試著做的時候可能會成功,也可能不成功,成功了最好,但是不成功也沒有事情的,因為畢竟是嘗試嘛.我覺得老外在c 裡面的異常中使用try這個關鍵字很形象,try這個try塊的意思就是說你試著做大括號裡面的事情,如果出...