[英]except block does not catch the exception in python
我的代碼如下
class Something(models.Model)
def exception(self)
try:
Something.objects.all()
except Exception():
raise Exception()
從測試用例中調用此方法,它可以工作,但是我需要引發異常,它不能捕獲異常,這是我的測試用例
def test_exception(self):
instance = Something()
instance.exception()
它的工作正常,但我需要引發例外塊除外
這行:
except Exception():
應該:
except Exception:
def exception(self)
try:
Something.objects.all()
except Exception, err:
#print err.message (if you want)
raise err
這將捕獲錯誤並在需要時打印確切的味精。
為什么要抓住例外只是為了重新提出它? 如果除了重新引發異常之外,您除了在套件中沒有做任何其他事情,那么根本就不用首先捕獲異常:
@staticmethod
def exception():
Something.objects.all()
如果您要在except
套件中進行一些瑣碎的操作,則:
def exception(self):
try:
Something.objects.all()
except Exception:
# do something (with self?)
raise
然后,要測試exception
方法是否引發Exception:
def test_exception(self):
instance = Something()
self.assertRaises(Exception, instance.exception)
這取決於Something.objects.all()
引發Exception
。
PS。 如果exception
不依賴於self
,那么最好將其從參數列表中刪除並將exception
設為靜態方法。
PPS。 Exception
是非常廣泛的基本異常類。 更具體的異常對調試更有用,並且允許其他代碼捕獲此特定的異常,而不是強制其處理任何可能的Exception
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.