JavaScript 中的错误处理:Try, Catch, Finally

发布: (2026年4月4日 GMT+8 13:45)
4 分钟阅读
原文: Dev.to

Source: Dev.to

🚨 JavaScript 中的错误是什么?

错误是代码执行(运行时)期间出现的问题。

示例

console.log(x); // ❌ ReferenceError: x is not defined

常见错误类型

  • ReferenceError – 变量未定义
  • TypeError – 类型使用错误
  • SyntaxError – 代码无效

😵 没有错误处理的问题

function divide(a, b) {
  return a / b;
}

console.log(divide(10, 0));
console.log("This may still run...");

某些错误可能会导致应用崩溃或出现意外行为。

💡 使用 trycatch

try...catch 代码块让您能够安全地处理错误

try {
  let result = riskyFunction();
  console.log(result);
} catch (error) {
  console.log("Something went wrong:", error.message);
}

📊 流程

try block runs

error occurs?
   ↓ yes
catch block runs

program continues safely

📥 理解 catch

try {
  console.log(x);
} catch (error) {
  console.log(error.name);    // ReferenceError
  console.log(error.message); // x is not defined
}

error 对象提供有用的调试信息。

🧹 finally

finally 块始终会执行——无论是否出现错误。

try {
  console.log("Trying...");
} catch (error) {
  console.log("Error occurred");
} finally {
  console.log("This always runs");
}

📊 执行顺序

try → catch (if error) → finally

🔥 抛出自定义错误

您可以使用 throw 创建自定义错误。

function withdraw(balance, amount) {
  if (amount > balance) {
    throw new Error("Insufficient balance");
  }
  return balance - amount;
}

try {
  withdraw(1000, 1500);
} catch (err) {
  console.log(err.message);
}

🧠 为什么使用自定义错误?

  • 更好的调试
  • 清晰的错误信息
  • 控制程序流程

🛠️ 实际案例

function parseJSON(data) {
  try {
    return JSON.parse(data);
  } catch (err) {
    console.log("Invalid JSON");
    return null;
  }
}

❓ 为什么错误处理很重要

  • ✅ 1. 防止崩溃 – 即使出现故障,您的应用仍能继续运行。
  • ✅ 2. 更佳的用户体验 – 用户看到有意义的提示,而不是破碎的页面。
  • ✅ 3. 更易调试 – 您可以清晰了解出错原因。
  • ✅ 4. 优雅的失败

错误示例:

// app crashes ❌

正确示例:

// show error message ✅
// continue execution ✅

⚠️ 重要说明

  • try...catch 仅适用于运行时错误
  • 不会捕获语法错误
  • 同步工作(异步需要特殊处理,如 async/await)。

🧠 最佳实践

  • 保持 try 块简短。
  • 使用有意义的错误信息。
  • 不要悄悄忽略错误。
  • 使用 finally 进行清理(关闭资源等)。

🚀 最后思考

错误处理不是可选的——它是必需的。使用 trycatchfinally,您可以:

  • 构建健壮的应用程序。
  • 优雅地处理失败。
  • 改进调试和维护。

🧠 快速总结

  • 错误发生在运行时。
  • try → 测试代码。
  • catch → 处理错误。
  • finally → 始终执行。
  • throw → 创建自定义错误。
0 浏览
Back to Blog

相关文章

阅读更多 »

JavaScript 中的解构赋值

你有没有写过这样的代码?js // 重复提取 const numbers = 10, 20, 30; const first = numbers0; const second = numbers1; 它能工作——但它是……

同步 vs 异步 JavaScript

JavaScript 是单线程的,但它可以通过同步和异步行为高效地处理多个任务。什么是同步代码?同步…

理解 JavaScript 中的函数

什么是函数?函数是一段旨在执行特定任务的代码块。与其一次又一次地编写相同的代码,你可以只在内部编写一次。