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

如何在JavaScript中抛出带缩进的异常?无方案时用什么退出Node.js进程

JavaScript throw 错误添加缩进及Node.js进程退出方案

1. 实现throw抛出带缩进的错误

原生JavaScript支持通过自定义Error类直接满足需求,无需修改底层逻辑:

方法:自定义带缩进的错误类

通过重写Error实例的name属性可以修改错误前缀的格式,若需要整个错误堆栈带缩进可额外处理stack属性:

class IndentedError extends Error {
  constructor(message, indent = 2) {
    super(message);
    // 给错误前缀添加指定长度的缩进
    this.name = ' '.repeat(indent) + 'Error';
    // 可选配置:给整个错误堆栈添加统一缩进
    this.stack = this.stack.split('\n').map(line => ' '.repeat(indent) + line).join('\n');
  }
}

// 使用方式和原生Error完全一致
throw new IndentedError('自定义错误信息', 2);

执行后输出示例:

Error: 自定义错误信息
    at Object.<anonymous> (/test.js:12:7)
    at Module._compile (node:internal/modules/cjs/loader:1256:14)
    ...

2. 直接退出Node.js进程的替代方案

如果不需要捕获错误,仅需打印错误后终止进程,可直接操作Node.js全局process对象:

  • 用console.error或者process.stderr输出错误信息(走标准错误流,符合通用日志规范)
  • 调用process.exit(code)终止进程,非0的code表示异常退出
// 打印带缩进的错误信息
console.error('  Error: 执行失败');
// 立即退出进程,退出码1表示异常终止
process.exit(1);

注意:process.exit会立即终止所有未完成的异步任务、未刷新的IO缓冲区,若需要等待缓冲写完再退出,可将打印逻辑放在process.on('exit')回调中执行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:36:04