Python異常處理

2021-08-26 05:56:42 字數 1981 閱讀 2761

try/except/finally

try:

i = 10 / 0

print(i)

print('xixixi')

except zerodivisionerror as e:

print(e)

finally:

print('sherlock blaze')

try下是可能發生異常的部分,except *** 是要捕獲的異常型別,finally是收尾工作,無論異常是否發生都會執行。

logging
import logging

try:

i = 10 / 0

print(i)

print('xixixi')

except zerodivisionerror as e:

print(e)

logging.exception(e)

finally:

print('sherlock blaze')

使用logging,可以記錄日誌。可以將日誌記錄到檔案中,方便查詢。

raise
n = 0

if n == 0:

raise valueerror('it\'s should not be zero')

else:

i = 10 / n

print(i)

使用raise可以丟擲異常,你也可以拋出自定義異常

class

zeroerror

(valueerror):

pass

n = 0

if n == 0:

raise zeroerror('it\'s should not be zero')

else:

i = 10 / n

print(i)

assert
n = 0

assert n != 0, 'n is zero'

i = 10 / n

print(i)

通過上述**,我們可以判斷n是否為0,如果不為0,為true,程式會繼續往下走,否則會丟擲異常。

unittest
import unittest
通過上述語句,可以匯入單元測試模組,並編寫單元測試。

import unittest

class

dict

(dict):

def__init__

(self, **kw):

super().__init__(**kw)

def__getattr__

(self, key):

try:

return self[key]

except keyerror:

raise attributeerror('no key named %s' % key)

def__setattr__

(self, key, value):

self[key] = value

class

test

(unittest.testcase):

deftest_init

(self):

d = dict(a=1, b='sherlock')

self.assertequal(d.a, 1)

self.assertequal(d.b, 'sherlock')

self.asserttrue(isinstance(d, dict))

通過上述**,我們成功寫了乙個測試類,按道理,把他們分開是更好的

python異常處理 Python 異常處理

使用者輸入不完整 比如輸入為空 或者輸入非法 輸入不是數字 異常就是程式執行時發生錯誤的訊號,在python中,錯誤觸發的異常如下 在python中不同的異常可以用不同的型別 python中統一了類與型別,型別即類 去標識,不同的類物件標識不同的異常,乙個異常標識一種錯 觸發indexerror 觸...

python異常舉例 Python異常處理

1.1異常問題舉例 例一 i input 請輸入數字 請輸入數字 0 print i print 5 int i traceback most recent call last file line 1,in zerodivisionerror division by zero 上述 的報錯是除零的錯...

python異常處理

當你的程式中出現異常情況時就需要異常處理。比如當你開啟乙個不存在的檔案時。當你的程式中有一些無效的語句時,python會提示你有錯誤存在。下面是乙個拼寫錯誤的例子,print寫成了print。python是大小寫敏感的,因此python將引發乙個錯誤 print hello world file l...