DataWeave日期转换函数语法错误求助:if-else与try-catch使用问题
DataWeave函数try/catch语法错误修复
问题原因
你的代码报错是因为DataWeave 2.0的try/catch语法不符合规范:
try块的代码需要用括号()包裹catch后面必须跟一个接收异常参数的lambda表达式(通过->标识),不能直接返回字符串
修正后的函数
以下是修复后的完整代码:
fun convertToISO(dateString: String?): String = if (dateString == null) "" else try( ((dateString[6 to -3] as Number) as DateTime {unit: "milliseconds"} as String) ) catch (e) -> "WRONG FORMAT"
额外优化说明
- 将参数类型改为
String?,明确允许传入null值(原代码中String类型在DataWeave 2.0中默认不接受null,判断dateString == null会失去意义) - 用
try(...)包裹待执行的逻辑,符合DataWeave标准语法 catch (e) -> "WRONG FORMAT"正确定义了异常处理的lambda,返回指定错误字符串
如果需要在catch块中执行更多逻辑,也可以用大括号包裹:
fun convertToISO(dateString: String?): String = if (dateString == null) "" else try( ((dateString[6 to -3] as Number) as DateTime {unit: "milliseconds"} as String) ) catch (e) -> { // 可在此添加额外错误日志或处理逻辑 "WRONG FORMAT" }
内容的提问来源于stack exchange,提问作者stewchicken
相关产品推荐
相关产品推荐

