如何捕捉错误

时间:2011-08-02 21:56:33

标签: opa

我使用函数Float.of_string来转换由公式获取的输入。

当然,用户可能是坏人并在输入中写一个句子而不是浮点数:)

有很多解决方案,测试字符串输入......但是在我看来函数float.of_string,应该测试,它必须转换为float。并且当字符串不是浮点数时作为证据......服务器将达到一个错误,它会杀死服务器(或至少会话)。

然后我想,最好的将是(选择):

  • 返回选项
  • 一种在杀死会话之前捕获错误的方法......

那么这篇文章的真正问题是: 有没有办法为OPA未捕获的异常执行类似try / catch块的操作。 如果是,它是如何工作的,是否可能在我们自己的函数中抛出错误?

感谢您的回答, 马修

1 个答案:

答案 0 :(得分:3)

好的,首先关注Float.of_string。它是一个低级函数,它确实假设一个格式良好的输入,因此不应该调用来自用户的任何东西(或者实际上任何可能失败的东西)。但是你并不是第一个问这样的人,所以我们确实应该改变这个函数来返回一个选项类型。

对于那种场景(当事情可能出错时),应该使用解析和Rule.float函数。要了解有关在Opa中解析的更多信息,您可以查看recent blog post,明天会有一个后续工作,我希望。

现在,关于异常处理:我们(正在?)计划将其添加到Opa,但截至今天它还没有。所以......耐心等待:)。