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.name 或 error instanceof 区分错误类型,再分别处理:
立即学习“Java免费学习笔记(深入)”;
动态WEB网站中的PHP和MySQL详细反映实际程序的需求,仔细地探讨外部数据的验证(例如信用卡卡号的格式)、用户登录以及如何使用模板建立网页的标准外观。动态WEB网站中的PHP和MySQL的内容不仅仅是这些。书中还提到如何串联JavaScript与PHP让用户操作时更快、更方便。还有正确处理用户输入错误的方法,让网站看起来更专业。另外还引入大量来自PEAR外挂函数库的强大功能,对常用的、强大的包
-
SyntaxError:常出现在
JSON.parse、eval或动态代码执行时 -
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);
}
}










