1、 什么时候会触发catch?
当程序顺序执行到一个 try 语句的时候,如果发生了异常,则会被捕获,转到相应的 catch 语句中进行处理。在js中,有以下的情况会触发catch:
- 获取未定义 / 不存在的属性
let accountInfo;
let userInfo;
let accountInfo1;
let userInfo1;
try {
accountInfo1 = accountInfo.aaa;
userInfo1 = userInfo;
} catch (e) {
console.log(e);
accountInfo1 = '111';
userInfo1 = 333;
}
console.log("accountInfo1,userInfo1:",accountInfo1,userInfo1)
- 变量名未定义
let accountInfo1;
let userInfo1;
try {
accountInfo1 = accountInfo;
userInfo1 = userInfo;
} catch (e) {
console.log(e);
accountInfo1 = '111';
userInfo1 = 333;
}
console.log("accountInfo1,userInfo1:",accountInfo1,userInfo1);
2、一些不会触发catch的情况
- 变量未初始化
let accountInfo;
let userInfo;
let accountInfo1;
let userInfo1;
try {
accountInfo1 = accountInfo;
userInfo1 = userInfo;
} catch (e) {
console.log(e)
accountInfo1 = '111';
userInfo1 = 333;
}
console.log("accountInfo1,userInfo1:",accountInfo1,userInfo1)
3、注意
- 捕捉到异常以后,try代码块后续的代码并不会被执行
let accountInfo;
let userInfo;
let accountInfo1;
let userInfo1;
try {
accountInfo1 = accountInfo.fff;
console.log('111');
userInfo1 = userInfo;
} catch (e) {
console.log(e)
accountInfo1 = '111';
userInfo1 = 333;
}