el中函数调用结果始终为null
一、问题描述
某日,一研发前来让寻求帮助,“为什么我的函数始终返回空,即使把函数修改为只包含一行抛异常的语句,也是如此。
”
二、尝试路径
- 怀疑IDE函数编译失败,只保留了之前某个始终返回为空的版本。结果,反编译Class发现没问题;
- 从函数这个点向上溯源,查看调用函数的流程和表达式。结果,发现调用函数的表达式是一个三元表达式,例如“
${ condition ? fn:myFunction(), null}
”。 - 根据第2条猜测是由于研发测试时,condition始终为
false
导致的。根据研发提供的报文证实猜测。
三、反思
- 一个异常都是发生在一个完整的操作链中的一个节点。我们要做的就是根据这个故障点向上回溯排查原因,直到源头。