Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
exception块在python中不捕获异常_Python_Exception_Try Catch - Fatal编程技术网

exception块在python中不捕获异常

exception块在python中不捕获异常,python,exception,try-catch,Python,Exception,Try Catch,我的代码如下 class Something(models.Model) def exception(self) try: Something.objects.all() except Exception(): raise Exception() 从testcases调用这个方法,它可以工作,但我需要引发异常,它不能捕获异常 这是我的测试用例 def test_exception(self): instance = Somethin

我的代码如下

class Something(models.Model)

    def exception(self)
    try:
       Something.objects.all()
    except Exception():
       raise Exception()
从testcases调用这个方法,它可以工作,但我需要引发异常,它不能捕获异常 这是我的测试用例

def test_exception(self):
    instance = Something()
    instance.exception()

工作正常,但我需要从exception块引发异常

为什么捕获异常只是为了重新引发它? 如果您在except套件中除了重新引发异常之外没有做任何事情,那么首先不要捕获异常:

@staticmethod
def exception():
    Something.objects.all()

如果您正在
套件中执行除
之外的非平凡操作,则:

def exception(self):
    try:
        Something.objects.all()
    except Exception:
        # do something (with self?)
        raise 
然后,要测试
异常
方法是否引发异常:

def test_exception(self):
    instance = Something()
    self.assertRaises(Exception, instance.exception)
这取决于
Something.objects.all()
引发
Exception


注:如果
异常
不依赖于
自身
,则最好将其从参数列表中删除,并将
异常
设为静态方法


PPS<代码>异常是一个非常广泛的基本异常类。更具体的异常将更有助于调试,并允许其他代码捕获此特定异常,而不是强制它处理任何可能的
异常

为什么捕获异常只是为了重新引发它? 如果您在except套件中除了重新引发异常之外没有做任何事情,那么首先不要捕获异常:

@staticmethod
def exception():
    Something.objects.all()

如果您正在
套件中执行除
之外的非平凡操作,则:

def exception(self):
    try:
        Something.objects.all()
    except Exception:
        # do something (with self?)
        raise 
然后,要测试
异常
方法是否引发异常:

def test_exception(self):
    instance = Something()
    self.assertRaises(Exception, instance.exception)
这取决于
Something.objects.all()
引发
Exception


注:如果
异常
不依赖于
自身
,则最好将其从参数列表中删除,并将
异常
设为静态方法

PPS<代码>异常是一个非常广泛的基本异常类。更具体的异常将更有助于调试,并允许其他代码捕获此特定异常,而不是强制它处理任何可能的异常

except Exception():
except Exception:
应该是:

这一行:

except Exception():
except Exception:
应该是:

这将捕获错误并在需要时打印准确的消息


这将捕获错误并在需要时打印准确的消息。

不清楚您要做什么。为什么要从catch块引发异常?此外,您的示例中存在大量语法错误(例如,缺少
异常
上的错误缩进)。如果您使用python unittest框架,您可能需要使用assertRaises(exception)方法。您尝试执行的操作非常不清楚。为什么要从catch块引发异常?此外,您的示例中还有许多语法错误(例如缺少
异常上的错误缩进)。如果您使用python unittest框架,您可能希望使用assertRaises(异常)方法。是的,但当然不应该是,因为捕捉异常是一个非常糟糕的主意-你应该捕捉你处理的实际异常,让其他异常冒泡起来。我可以知道投票失败的原因吗?我的回答在技术上是正确的,完全回答了OP的问题,因此我认为没有理由投反对票,请参阅StackOverflow的常见问题解答。如果您想就好的Python编程实践向OP提供建议,请评论这个问题。@nicola您是对的。事实上,我投了更高的票。它比其他答案更好地回答了这个问题,这些答案指出了正确的用法,但没有说明原始示例失败的原因。我怀疑它也应该是
raiseexception
(不带括号)或
raise
。好的做法与坏的做法不是问题的一部分。是的,但当然不应该是,因为仅仅捕获
异常是一个非常糟糕的主意-你应该捕获你处理的实际异常,让其他异常冒泡。我可以知道否决票的原因吗?我的回答在技术上是正确的,完全回答了OP的问题,因此我认为没有理由投反对票,请参阅StackOverflow的常见问题解答。如果您想就好的Python编程实践向OP提供建议,请评论这个问题。@nicola您是对的。事实上,我投了更高的票。它比其他答案更好地回答了这个问题,这些答案指出了正确的用法,但没有说明原始示例失败的原因。我怀疑它也应该是
raiseexception
(不带括号)或
raise
。好的做法和坏的做法不是问题的一部分。我相信你的意思是提高错误。您不能发出
err.message
这是一个字符串。我相信您的意思是
raiseerr
。您不能引发
err.message
,它是一个字符串。