【问题标题】:Cant handle SML exceptions with parameters无法处理带参数的 SML 异常
【发布时间】:2015-02-03 03:57:25
【问题描述】:

假设我有一个异常定义如下:

exception MyException of string

我在一个函数中引发(这个函数返回字符串)如下:

fun foo ... = raise DomenaInterpretacije ("Error ...")   
  | foo ... ...

然后我以某种方式调用该函数,从而产生异常:

fun testExc () =
     (foo ...)
     handle MyException msg => msg

但是这些产量:

Error: non-constructor applied to argument in pattern: MyException 
Error: unbound variable or constructor: msg

我在这里做错了什么?

【问题讨论】:

    标签: exception exception-handling sml smlnj raise


    【解决方案1】:

    显然,你做错了什么与你粘贴的代码没什么关系。

    下面提供了您的代码的工作示例:

    exception MyException of string
    
    fun foo () = raise MyException "I wonder what happened."
    
    fun testFoo () =
        foo ()
        handle MyException msg => msg
    

    【讨论】:

      【解决方案2】:

      异常实际上是在模块内部定义的,所以我不得不像 MyModule.MyException msg 一样调用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-12
        • 2021-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-17
        相关资源
        最近更新 更多