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

请求提供SuiteScript 2(SS2)Error对象的使用示例

SuiteScript 2 Error 对象使用示例与差异说明

我完全懂你找官方文档示例的头疼——SS2的Error对象确实和原生JS的用法差不少,得靠N/error模块来创建,不能直接用原生的new Error()。下面给你整几个实用的场景示例,覆盖常见的错误创建、抛出和捕获:

1. 创建并抛出自定义用户错误(UserError)

这是最常用的场景,用来给用户展示友好的业务提示:

define(['N/error'], function(error) {
    function validateInput(inputValue) {
        if (!inputValue) {
            // 创建用户错误实例
            const customUserError = error.create({
                name: 'EMPTY_INPUT_ERROR', // 自定义错误标识,方便日志排查
                message: '输入值不能为空,请重新填写', // 用户能看到的友好提示
                notifyOff: false // 是否关闭NetSuite默认通知,默认false会触发系统通知
            });
            // 抛出错误终止流程
            throw customUserError;
        }
    }

    // 测试调用
    try {
        validateInput('');
    } catch (e) {
        log.error('输入验证失败', e.message);
        // 这里可以添加额外处理,比如返回提示给前端页面
    }
});

2. 创建系统错误(SystemError)

多用于代码逻辑异常(比如API调用失败),适合记录技术层面的错误:

define(['N/error', 'N/log'], function(error, log) {
    function fetchRecord(recordId) {
        try {
            // 模拟调用N/record模块获取记录失败的场景
            throw new Error('模拟API请求超时');
        } catch (nativeError) {
            // 包装成SS2标准系统错误
            const systemError = error.create({
                name: 'RECORD_FETCH_FAILED',
                message: `获取记录ID ${recordId} 失败:${nativeError.message}`,
                notifyOff: true // 关闭系统默认通知,自行处理日志
            });
            log.error('系统错误详情', systemError.stack);
            throw systemError;
        }
    }
});

3. 捕获并区分不同类型的SS2错误

SS2的Error对象自带type属性,可以精准区分用户错误和系统错误:

define(['N/error'], function(error) {
    function processData(data) {
        try {
            if (data.amount < 0) {
                throw error.create({
                    name: 'NEGATIVE_AMOUNT',
                    message: '金额不能为负数',
                    type: error.Type.USER_ERROR // 显式指定错误类型
                });
            }
            // 其他业务逻辑...
        } catch (e) {
            if (e.type === error.Type.USER_ERROR) {
                log.debug('用户输入错误', e.message);
                // 返回友好提示给用户
            } else if (e.type === error.Type.SYSTEM_ERROR) {
                log.error('系统异常', e.stack);
                // 触发告警或重试逻辑
            } else {
                // 处理原生JS错误(比如未捕获的原生异常)
                log.error('未知错误', e.message);
            }
        }
    }
});

和原生JS Error的核心差异

  • 必须依赖N/error模块:不能直接用new Error(),NetSuite推荐用error.create()创建标准化错误,更好地和NetSuite日志、通知系统集成。
  • 内置类型区分:自带USER_ERROR和SYSTEM_ERROR两种类型,方便分类处理不同场景的错误。
  • 集成NetSuite通知:通过notifyOff参数可控制是否触发系统默认邮件通知,原生Error无此功能。
  • 标准化属性:包含name、message、type、stack等属性,更贴合NetSuite开发场景。

内容的提问来源于stack exchange,提问作者jk121960

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:34:05