我在OCaml中编写了一个简单的非负数Fibonacci函数,如果传入负数,我会引发异常。
let rec fib (n:int) : int =
match n with
| a when a < 0 -> invalid arg ("Positive numbers only")
| i when i < 2 -> n
| _ -> fib (n - 1) + fib(n - 2)
let _ = assert (fib(-1))
该功能非常简陋(它是我的第一个OCaml程序),但我的问题涉及测试在执行fib(-1)
时引发异常。
let _ = assert (? = fib(-1))
如何断言此异常?
答案 0 :(得分:3)
@SteveVinoski的答案非常好,但显然这是一个家庭作业问题而不是一个真正的问题: - )
CRSF
... try
语句是处理异常的OCaml片段。这就是您需要用来验证是否引发异常的内容。您可以使用它来编写自己的with
版本。