基础-流程控制与错误处理
约 661 字大约 2 分钟
2025-10-09
块语句
块语句是Javascript最基本的语句。块由一对花括号界定:
{
statement1;
statement2;
// …
statementN;
}备注: 在块中用
var声明的变量不是块级作用域的,而是函数作用域或全局作用域的。
条件语句
if语句
if...else
if (condition) { statement1; } else { statement2; }if...else if...else
if (condition1) { statement1; } else if (condition2) { statement2; } else if (conditionN) { statementN; } else { statementLast; }if判断中的真值与假值
下面这些值求值为
false(也叫做假值):falseundefinednull0NaN空字符串("")
除此之外所有其他的值(包括所有的对象)在被传递给条件语句时会求值为
true。注意:空数组
[]、字符串"false"在if判断中为true
switch
switch (expression) {
case label1:
statements1;
break;
case label2:
statements2;
break;
// …
default:
statementsDefault;
}异常处理
JavaScript 异常类型ECMAScript 异常,DOMException
throw 语句
throw 语句的作用是主动抛出一个异常。当程序执行到 throw 时,当前函数的执行会立即停止,控制权将交给调用栈中最近的异常处理程序(catch 块)。
你可以抛出任何类型的值:字符串、数字、布尔值,但最佳实践是抛出一个 Error 对象或其子类的实例,因为它们自带堆栈跟踪等有用的调试信息。
// 1. 抛出 Error 对象(推荐)
throw new Error('发生了一个通用错误');
// 2. 抛出更具体的错误类型
throw new SyntaxError('语法错误');
throw new TypeError('类型错误');
throw new ReferenceError('引用错误');
// 3. 甚至可以抛出其他类型(不推荐)
throw '这是一个字符串错误'; // 不推荐
throw 404; // 不推荐
throw { message: '错误详情', code: 500 }; // 有时用于自定义错误对象你可以创建自己的错误类,继承自 Error,以包含更多上下文信息。
class ValidationError extends Error {
constructor(message, field) {
super(message);
this.name = 'ValidationError';
this.field = field; // 自定义属性,记录是哪个字段出错
}
}
// 使用自定义错误
throw new ValidationError('邮箱格式不正确', 'email');try...catch...finally
try {
// 可能会出错的代码
riskyOperation();
console.log('这行在出错后不会执行');
} catch (error) {
// 如果 try 块中抛出异常,执行这里的代码
console.error('捕获到错误:', error.message);
// 可以在这里进行错误上报、给用户友好提示等
} finally {
// 无论是否出错,最终都会执行
console.log('清理工作完成');
}
// 错误被捕获后,程序会继续执行后面的代码,而不会崩溃
console.log('程序继续正常运行');