簡體   English   中英

除了塊不捕獲Python中的異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM