Closed. This question needs details or clarity。它当前不接受答案。












想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。

7年前关闭。



Improve this question




我有一个函数不返回,我想通过引发异常进行重定向

我有以下代码:
class RedirectRequired(Exception):

    def __init__(self, url):
        self.url = url

和功能
 def Foo(x):
     hede = {'hodo':5}

  try:
         hede.get('hodo').get('hede')
  except AttributeError, e:
         logger.error(e.message)
         raise RedirectRequired('/')

但是有错误No exception Supplied。有关重定向或引发异常的任何想法,如下所示?

也有错误。

错误无法提交消息:u'RedirectRequired'
错误无法提交消息:u'RedirectRequired'

最佳答案

问题在于RedirectRequired异常的构造函数构造了一个RedirectRequired异常来引发它,从而构造了RedirectRequired异常来引发它,从而…

每次通过这种无限递归,您都会记录e.message,每次都会是同一条消息。

在其中大约1000个之后,您将点击RuntimeError: maximum recursion depth exceeded

您最可能真正想要的是两件事:RedirectRequired异常类型,以及使用它的Redirector包装器类或redirect包装器函数。像这样:

class RedirectRequired(Exception):
    pass

class Redirector(object):
    def __init__(self, url):
        self.url = url

        hede = {'hodo':5}
        try:
            hede.get('hodo').get('hede')
        except AttributeError, e:
            logger.error(e.message)
            raise RedirectRequired('/')

现在:
>>> r = Redirector('abc')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 8, in __init__
__main__.RedirectRequired: /

关于python - 在非返回功能中引发重定向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20132947/

10-09 13:36