我们的教授要求我们在作业中这样做:
如果给定的阈值是负数,您应该打印消息“错误:负阈值”并返回一个空列表。为此,定义一个名为 ThresholdOutOfRange 的异常,如果阈值为负数,则提高它,并处理异常以实现正确的行为。
我不明白如何引发异常、返回值和打印错误消息。现在我引发异常的代码是(只是有异常的重要位):
fun getnearbylist(center, threshold, ziplist) =
let
exception ThresholdOutOfRange;
fun test_threshold(threshold, zip, nil) =nil
| test_threshold(threshold, zip, ziplist as x::xs) =
if (threshold <0.0) then raise ThresholdOutOfRange
(* [...skipped a long unrelated middle bit. most important is just knowing
this function returns a string list...] *)
else x::test_threshold(threshold, zip, xs)
in
test_threshold(threshold, center, ziplist)
handle
ThresholdOutOfRange => []
end
因此,当引发异常时,我的代码只会返回一个空列表。鉴于异常必须具有与我所知的引发它们的函数相同的返回类型,我该怎么做才能返回空列表并打印错误消息?