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)
assertn = 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...