请求提供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
相关产品推荐
相关产品推荐

