信息发布→ 登录 注册 退出

javascript错误如何处理_如何使用try catch语句

发布时间:2025-12-25

点击量:
JavaScript错误处理核心是try...catch语句,用于捕获并处理异常而不中断程序;支持按错误类型(SyntaxError、ReferenceError、TypeError)分别处理,finally确保清理操作执行,throw可主动抛出内置或自定义错误。

JavaScript 错误处理的核心是 try...catch 语句,它能让你在代码出错时不中断整个程序,而是捕获错误、记录信息或执行备用逻辑。

try catch 的基本结构

try 块中放可能出错的代码,catch 块接收并处理抛出的错误。如果 try 中没有异常,catch 就不会执行。

基本写法:

try {
  // 可能出错的代码,比如访问 undefined 属性、JSON.parse 无效字符串
  JSON.parse('{ "name": "Alice"'); // 缺少右括号 → SyntaxError
} catch (error) {
  console.error('解析失败:', error.message);
  // 可以在这里做降级处理,比如显示默认数据
}

捕获特定错误类型

不是所有错误都该一视同仁。你可以通过判断 error.constructor.nameerror instanceof 区分错误类型,再分别处理:

  • SyntaxError:常出现在 JSON.parseeval 或动态代码执行时
  • ReferenceError:访问未声明变量(如 console.log(notExist)
  • TypeError:调用非函数、读取 null/undefined 属性等

示例:

try {
  doSomething();
} catch (error) {
  if (error instanceof TypeError) {
    console.warn('类型错误,跳过操作');
  } else if (error instanceof SyntaxError) {
    console.error('数据格式异常,请检查输入');
  } else {
    console.error('未知错误:', error);
  }
}

finally:无论成功与否都要执行

加上 finally 块,适合做清理工作,比如关闭加载状态、释放资源:

let loading = true;
try {
  await fetch('/api/data');
} catch (error) {
  console.error(error);
} finally {
  loading = false; // 确保 loading 总会关闭
}

主动抛出错误与自定义错误

throw 主动抛出错误,配合 try catch 实现业务校验:

  • 抛出字符串:throw '用户名不能为空'(简单但不推荐)
  • 抛出 Error 实例:throw new Error('用户名不能为空')(保留堆栈,更规范)
  • 自定义错误类(适合复杂项目):
class ValidationError extends Error {
  constructor(field, message) {
    super(`${field}: ${message}`);
    this.name = 'ValidationError';
  }
}
// 使用
try {
  if (!username) throw new ValidationError('username', '必填项');
} catch (error) {
  if (error instanceof ValidationError) {
    showErrorMessage(error.message);
  }
}
标签:# javascript  # java  # js  # json  #   # ai  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!