题
假设我有一个控制器的方法,如下所示:
@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
希望这有助于,
汤姆
不隶属于 StackOverflow