繁体   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