You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 21:35:05