Skip to content

流程控制与错误处理 ​

本节目标:根据条件选择执行路径,抛出和捕获异常,并用错误信息定位问题。

条件与分支 ​

if...else 适合条件分支,switch 适合多个离散选项。条件表达式会转换为布尔上下文;空字符串、0、NaN、null、undefined 和 false 为假值。

js
const score = 86;
if (score >= 90) {
  console.log("优秀");
} else if (score >= 60) {
  console.log("通过");
} else {
  console.log("继续练习");
}

分支条件应表达清楚的业务判断。避免复杂嵌套三元表达式;必要时把判断拆成具名布尔变量。

抛出与捕获异常 ​

异常用于报告无法按正常路径继续的错误。抛出 Error 或其子类实例,调用者可用 try...catch 恢复或补充上下文:

js
function parsePositiveInteger(text) {
  const value = Number(text);
  if (!Number.isInteger(value) || value <= 0) {
    throw new RangeError("请输入正整数");
  }
  return value;
}

try {
  console.log(parsePositiveInteger("0"));
} catch (error) {
  console.error(error.message);
}

finally 用于无论成功失败都要执行的收尾逻辑。捕获异常后应处理、转换或重新抛出;不要空 catch 掩盖故障。

错误类型与调试 ​

常见错误包括 SyntaxError(语法无法解析)、ReferenceError(访问不存在或尚不可用的标识符)、TypeError(对不适当类型执行操作)和 RangeError(值超出有效范围)。

排查时阅读错误堆栈,确认首个属于自己代码的调用位置;检查变量类型和值;使用断点逐步执行。console.log() 适合快速观察,浏览器开发者工具和 Node.js 检查器适合交互调试。

循环和流程转移 ​

break 结束循环或 switch,continue 跳过当前一轮。条件不变的 while 循环会无限执行;为循环设置明确的终止条件。具体循环和迭代器见集合章节。

小结与练习 ​

  • 条件语句决定执行路径;将复杂条件命名有助于理解。
  • 异常适用于异常情况,捕获后必须有明确处理。
  • 错误类型、消息、堆栈和断点共同帮助定位故障。

练习:编写一个解析分数的函数,拒绝非数字或小于 0、大于 100 的输入,并在调用端显示错误消息。