如何解决“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 异常错误”的主要内容,如果未能解决你的问题,请参考以下文章