关闭。这个问题需要details or clarity .它目前不接受答案。
想改进这个问题?通过 editing this post 添加详细信息并澄清问题.
8年前关闭。
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
提出它的异常(exception),这…
每次通过这个无限递归,你记录 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/