我正在编写一个简单的HTTP服务器,我有这样的代码来解析请求字符串
val method :: url :: version :: rest = tokenize(requestString)
if (rest != Nil)
throw new IncorrectRequestException("Extra data after HTTP version")
tokenize()函数返回一个与变量列表匹配的字符串列表。这很好用。
但是,我想添加漂亮的错误报告。例如,如果缺少HTTP版本,我想抛出IncorrectRequestException(“缺少HTTP版本”)而不是简单的MatchError异常。
有没有什么好方法可以实现这一点,而不是检查tokenize()调用结果的长度?
答案 0 :(得分:1)
Combinator Parsers可能是你在这里介绍的最强大的技术。您也可以尝试从列表中获取Iterator
,然后进行连续next
次调用以检索值。