假设我有一个控制器的方法,如下所示:

@expose()
def search(self, title):
    return dict()

HTTP://网站/搜索/ 将导致引发异常:类型错误:搜索( )恰恰2参数(1给出)。

该错误是合乎逻辑的,但我宁愿处理它更优雅。使用* ARGS或** kwargs只有这样,才能避免我甚至不似乎能够捕获错误?

编辑:我想我随时可以使用标题=无,但的太多的是的可能变得丑陋...

反正是有办法来捕获异常和/或处理参数的失配更优雅?

由于

有帮助吗?

解决方案

在你抛出用于指定“不相容”控制器方法签名的例外只发生在调试/开发模式。 你不需要在生产环境更加妥善地处理它,因为一旦你禁用的发展模式,控制方法发送一个HTTP 500错误时,他们缺乏必要的参数。

您可能要考虑在你的development.ini相应的设置:

# WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT*
# Debug mode will enable the interactive debugging tool, allowing ANYONE to
# execute malicious code after an exception is raised.
set debug = false

我希望这是你的问题。

在你仍然想控制做的工作,即使它缺乏重要的参数,必须定义默认值的情况下,否则控制器无法完成其正常工作呢。 你最好问自己的问题是:你只是想要一个更好的错误信息,或者你想控制器能够做到的任务。在后一种情况下,指定默认参数是最好的做法,*指定参数和** kwargs每种方法只是让客户犯规得到一个错误,是我选择了非常丑陋的黑客攻击。

如果要更改这些错误的显示指/controllers/error.py

希望这有助于,

汤姆

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top