天天看點

python中的異常和錯誤_python中的錯誤和異常

Tips:寫程式和工作一樣,千萬不要害怕失誤(報錯)。因為,隻有當這個問題,真正戳痛你的時候,你才會用心想辦法來解決,這也是你提升自己最好的辦法。

同樣,失誤(報錯)後,不要着急詢問他人或上網查詢尋求解決辦法。應從報錯本身的含義入手,對自己編寫的代碼進行檢查。

不要覺得工作失誤(程式報錯),是一種很丢人的現象,因為每一個程式大佬,職場精英,都是從菜鳥過來的,若果你因為因為出入某行業,或者剛剛接觸寫程式而被某上司,某同僚嘲笑,那麼隻能從另外一個角度證明這樣的上司、同僚,同樣很菜。

錯誤類型

文法錯誤(Syntax Error)

文法錯誤, 即我們運作不符合python文法的代碼時候,系統給我們的提示, 在解析時會報SytaxError, 并且會顯示出錯的哪一行, 并且用小箭頭指明最早探測到錯誤的位置。程式運作之前就會預先檢查文法錯誤, 是以報出文法錯誤的時候程式實際上還沒有運作。

異常(Exceptions)

異常,即我們在編寫代碼的時候,基本的文法是沒有問題的,但是還會在運作中産生錯誤,這類報錯,叫做異常。

除零錯誤ZeroDivisionError: division by zero

命名錯誤NameError: name "xx" is not defined

類型錯誤TypeError

等等..........更多請參照下圖

python中的異常和錯誤_python中的錯誤和異常

使用try和except處理錯誤

當我們在寫代碼的過程中,出現異常時,系統會終止程式。有些時候我們不希望程式終止,而是希望跳過這部分出現異常的部分,去執行之後的部分。這時候,就要用到try - except語句或try - final語句,綜合來說,這類語句的基本結構如下:

try:代碼塊1(可能會出錯的代碼塊放這裡)except:代碼塊2(如果代碼塊1出錯了,運作代碼塊2)else:代碼塊3(如果代碼塊1沒出錯了,運作代碼塊3)finally:代碼塊4(不論代碼塊1是否正确,都運作代碼塊4)

手動引發錯誤

在某些時候,我們還是希望可以提前終止某些執行的程式,手動引起報錯,是一種不錯的選擇。手動引起報錯的關鍵字為raise, 後面緊跟着異常的錯誤類型,以及異常提示内容:

raise excptions("contents")

自定義錯誤

我們會發現上面我們手動引發的錯誤類型是ValueError,但是這對于一般熟悉異常類别的人看來,這段代碼引發這樣的錯誤,就會非常奇怪。是以,我們需要來定義一些合格該場景的異常類别。異常,其實是一種類(class),捕獲一個錯誤就是捕獲到該類的一個執行個體。是以,錯誤并不是憑空産生的,而是有意建立并抛出的。

class ListError(Exception): #隻添加了一個類定義

pass