4

我正在使用函数 Float.of_string 来转换公式获得的输入。

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

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

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

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

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

谢谢你的回答,马修

4

1 回答 1

3

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

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

现在,关于异常处理:我们(是?)计划将它添加到 Opa,但截至今天它还不可用。所以...耐心点:)

于 2011-08-02T22:02:41.380 回答