我有一个服务器接收我必须解析的请求,以便获取请求处理程序使用的参数。此外,解析和请求处理程序都可能以某种方式失败(例如:对于解析器,缺少参数;对于req。处理程序:数据库中的某些错误),因此" status"在下面的代码中。请求处理程序当然会提供某种响应,然后我必须将其发送回客户端。
因此我无法决定在我的" main"中使用以下哪个选项,因为我希望将解析器与处理程序分开:
1)
parser.parse(request,¶m1, ¶m2, &status)
handler.handle(param1, param2, &response, &status)
2)
status = parser.parse(request, ¶m1, ¶m2)
status = handler.handle(param1, param2, &response)
3)
Params params = parser.parse(request, &status)
handler.handle(params, &response, &status)
4)
status = parser.parse(request, ¶ms)
status = handler.handle(params, &response)
5)
parser.parse(request, ¶ms, &status)
response = handler.handle(params, &status)
6)等,其他一些组合
(Params将是不同参数的某种容器,因此对于每种类型的请求,我会有不同的" Params"类型。此外,"&"可能意味着指针或引用,我使用的是c ++,但它与问题无关)
哪个最简单,更清晰,最好,......,无论如何?
***有很多类似的问题,但没有一个包括"状态"部分,所以我无法理解
答案 0 :(得分:0)
这实际上不是语言无关的,因为它依赖于语言功能。例如,在Java中我会这样做:
try {
Params params = parser.parse(request); // parser.parse will throw ParseException if something wrong
Response response = handler.handle(params); // handler.handle will throw HandleException if something wrong
// send response to the client (status 200)
} catch (ParseException e) {
// Send parse error to the client (for example: status 400 with e.getMessage() as message)
} catch (HandleException e) {
// Send handle error to the client (for example: status 500 with e.getMessage() as message)
}
所以status
只是一个异常,如果状态不好,如果状态良好则没有异常。这可以是status
字段的自定义异常,以获取更多详细信息。
如果编程语言不能使用异常,那么您可以使用传递值(&status
)作为示例。但是没有通过结果,返回状态。返回结果。 parse
的结果是解析参数,而不是状态。