私たちの教授は、課題でこれを行うように私たちに依頼しました:
指定されたしきい値が負の場合、「エラー: 負のしきい値」というメッセージを出力し、空のリストを返す必要があります。これを行うには、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
したがって、私のコードは、例外が発生したときに空のリストを返すだけです。私の知る限り、例外は例外が発生した関数と同じ戻り値の型を持つ必要があるため、空のリストを返してエラー メッセージを出力できるようにするにはどうすればよいでしょうか?