js try catch 的使用
2019-07-22 本文已影响0人
前端小旋风
比如嘞
function test(){
return new Promise((r,j) => {
setTimeout(() => {
j('@')
}, 2000);
})
}
test().catch((err) => {
console.log(err) // @
})
如果用await的话就要用try catch 来获取catch的返回值了
async function test2(){
try {
let res = await test();
}catch (e){
console.log(e) // @
}
}
test2();
try catch 的嵌套
function test(str){
return new Promise((r,j) => {
setTimeout(() => {
j(str)
}, 2000);
})
}
async function test2(){
try {
let res = await test('@');
try {
let res = await test('!')
}catch (e){
console.log(e,'!') // 没有输出
}
}catch (e){
console.log(e,'@') // @@
}
}
test2();
内部的try因为外部的try出现异常,代码运行直接跳转到catch中
function test(str){
return new Promise((r,j) => {
setTimeout(() => {
if(str == '@'){
r(str)
}else {
j(str)
}
}, 2000);
})
}
async function test2(){
try {
let res = await test('@');
try {
let res = await test('!')
}catch (e){
console.log(e,'!') // !!
}
}catch (e){
console.log(e,'@')
}
}
test2();
如果外部try 没有出现异常会继续向下执行
我建了一个前端微信交流群,欢迎大家加入,qq中转群号:1076484243