对于 jexl 脚本中的以下语句,
routeX = Telemat.locate(map, vehicle, newLatLong);
使用该 JEXL 按以下顺序继续
- 解决 Telemat.locate(map, vehicle, newLatLong)。
- 查询 has('routeX'),以便我的 Java 代码知道声明了哪个 varname,并且如果 varname 已经存在,可以反馈给 JEXL。
- 调用方法 set('routeX', <resolved value of Telemat.locate(map, vehicle, newLatLong)> )
也就是说,RHS 之前已解析,调用了 has 或 get,因此我的 Java 代码在评估 RHS 时将不知道 LHS varname。
假设当地图无法访问时,我在 RunTimeException 中嵌入了 InAccessibleMapException 原因。碰巧的是,在某个情况下,地图无法访问。这导致 RunTimeException(InAccessibleMapException) 被抛出。
我有try-catch
try {
jexlScript.execute(script);
} catch (RunTimeException rte) {
// but my code does not know the varname.
}
当 JEXL 抛出异常时,我的 Java 代码需要向我工作的工程师反馈一条错误消息,其中包括导致脚本错误的 varname。
什么是最好的方法或策略,当在 RHS 解析期间引发异常时,我可以使用捕获 varname,以便异常捕获器可以在日志和错误消息中反馈除错误之外的 varname?