如何解决“Erlang 异常错误”

Posted

技术标签:

【中文标题】如何解决“Erlang 异常错误”【英文标题】:How can I solve “an Erlang Exception Error” 【发布时间】:2020-06-23 23:02:12 【问题描述】:

我在调试 Erlang 聊天引擎时不断收到异常错误。

错误信息如下:

异常错误:没有函数子句匹配 code_lock:locked(cast, button,1, #button => [], code => [a,b,c,d], length => 4)

知道如何调试吗?

【问题讨论】:

【参考方案1】:

定义了函数locked(异常还应该告诉您它的定义是从哪段时间和哪一行开始的),但没有一个子句与异常中显示的参数匹配。

例如,如果我们定义

nfcm([H|T],X) ->
    [H,X|T];
nfcm(A,B,C) ->
    A,C,B.

我们可以调用nfcm([1,2,3], 4)nfcm(1,2, 3) 来获取[1,4,2,3]1,3,2,但是调用nfcm(1, 2)nfcm(1,2,3, 4) 会导致异常,因为1 既不匹配列表也不匹配元组,1,2,3 也不匹配列表,也不匹配两个元素的元组。

解决问题有两种方法:要么固定函数的定义,要么固定参数以匹配现有定义。

【讨论】:

好吧,我做了一个调整并运行了一个命令 code_lock:start_link([1,2,3], 4)。而且我得到了另一个**异常错误:未定义的函数code_lock:start_link/2。 注释不是粘贴代码的最佳位置。最好用代码更新问题。 好的。我会更新这个问题。好吧,我做了一个调整并运行了一个命令 code_lock:start_link([1,2,3], 4)。而且我得到了另一个**异常错误:未定义的函数code_lock:start_link/2。【参考方案2】:

好的,这与匹配现有定义的参数有关。整理了一下,调试过程就ok了。

【讨论】:

感谢@choroba 的提示。

以上是关于如何解决“Erlang 异常错误”的主要内容,如果未能解决你的问题,请参考以下文章

右侧值不匹配的 Erlang 异常错误

我需要帮助解决这个 JDBC 异常错误,如何解决这个问题?

如何解决 Pyspark 中的分析异常错误

Proguard 解析异常错误。如何解决

如何解决此 Stream Close 异常错误?

运行 Kmeans 时如何解决“异常:数据必须是一维”错误