【问题标题】:Sublime Text 3 smlnj REPL not printing exceptionsSublime Text 3 smlnj REPL 不打印异常
【发布时间】:2019-03-15 14:58:18
【问题描述】:

当代码中出现异常时,我不会收到任何消息或任何打印内容。比如下面的代码:

fun test n = 
if n = 1
then raise Fail ("hey")
else 2

val t = test 1

当我输入时

- use "test.sml";

输出只是

[opening test.sml]
val it = () : unit

我希望它打印引发异常和消息(“嘿”)

关于如何解决此问题的任何想法 我正在使用 smlnj 110.82

【问题讨论】:

    标签: exception sublimetext3 sml read-eval-print-loop smlnj


    【解决方案1】:

    因为你没有处理你的异常。

    你应该这样做:

    fun test n =
    if n = 1
    then raise Fail ("hey")
    else 2
    
    val t = test 1 handle Fail msg => 0;
    

    [opening practice.sml]
    val test = fn : int -> int
    val t = 0 : int
    val it = () : unit
    

    如果您希望在屏幕上看到 Fail msg,请使用副作用:

    fun test n =
    if n = 1
    then raise Fail ("hey")
    else 2
    
    val t = test 1 handle Fail msg => (print (msg ^ "\n"); 0)
    

    [opening practice.sml]
    hey
    val test = fn : int -> int
    val t = 0 : int
    val it = () : unit
    

    【讨论】:

      猜你喜欢
      • 2023-03-07
      • 2015-05-11
      • 2015-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-27
      • 1970-01-01
      相关资源
      最近更新 更多