【问题标题】:handling exceptions in ML处理 ML 中的异常
【发布时间】:2010-12-21 16:23:20
【问题描述】:

大家,我正在尝试了解异常在 ML 中是如何工作的,但我遇到了奇怪的错误,我不知道出了什么问题:

exception Factorial 

fun checked_factorial n =
  if n < 0 then
    raise Factorial 
  else n;

fun factorial_driver () =
    checked_factorial(~4)
  handle
    Factorial => print "Out of range.";

可能出了什么问题?提前感谢您的帮助。

【问题讨论】:

    标签: sml smlnj


    【解决方案1】:

    您需要确保factorial_driver 具有一致的类型。非异常情况返回int,因此 ML 推断函数的类型为unit -&gt; int,但异常情况(即print 表达式)返回unit,而不是int

    一般来说,你基本上需要在所有情况下都返回一个相同类型的值。

    【讨论】:

      猜你喜欢
      • 2020-06-26
      • 1970-01-01
      • 1970-01-01
      • 2021-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多