await不要用try-catch了

文章通过对比不同的代码示例,展示了如何在使用async函数和Promise时进行错误处理。它强调了使用catch块的重要性,并解释了await关键字如何影响后续代码的执行。教程还提醒读者可以参考各种在线资源进行学习,并警告不要直接跳过try-catch语句。

牙叔教程 简单易懂

一般人是这样写代码的
function test() {
return new Promise((resolve, reject) => {
throw new Error(“testError”);
});
}

async function main() {
try {
await test();
} catch (err) {
console.log(err);
}
}
main();

二般人是这样写代码的
function test() {
return new Promise((resolve, reject) => {
throw new Error(“testError”);
});
}

async function main() {
await test().catch((err) => {});
console.log(“await后 这里正常打印 说明await后面的代码不会被阻塞”);
}
main();

再此时一下返回值
function test() {
return new Promise((resolve, reject) => {
resolve(“hello world”);
});
}

async function main() {
let result = await test().catch((err) => {});
console.log(result);
console.log(“await后 这里正常打印 说明await后面的代码不会被阻塞”);
}
main();

function test() {
return new Promise((resolve, reject) => {
throw new Error(“testError”);
});
}

async function main() {
let result = await test().catch((err) => {
console.log(err);
});

console.log("result = ");
console.log(result);
console.log(“await后 这里正常打印 说明await后面的代码不会被阻塞”);
}
main();

以后就不用try catch await了

环境

设备: 小米11pro
Android版本: 12
Autojs版本: 9.3.11

名人名言

思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问 — 牙叔教程

声明

部分内容来自网络 本教程仅用于学习, 禁止用于其他用途

### JavaScripttry-catch 语句的用法 在 JavaScript 中,`try-catch` 语句用于处理代码执行过程中可能出现的错误。通过这种方式,可以确保程序在遇到异常时不会直接崩溃,并能够提供适当的错误处理机制[^1]。 #### 基本语法 以下是 `try-catch` 的基本语法结构: ```javascript try { // 尝试执行的代码块,可能产生错误 } catch (error) { // 捕获并处理错误的代码块 } ``` 其中,`try` 块包含可能会抛出错误的代码,而 `catch` 块则负责捕获和处理这些错误。`error` 参数包含了错误的详细信息,例如错误消息和堆栈跟踪[^2]。 #### 示例:捕获同步代码中的错误 以下是一个简单的示例,展示了如何使用 `try-catch` 捕获同步代码中的错误: ```javascript try { let a = 10; let b = 0; let c = a / b; // 这里会产生一个错误(除以零) console.log(c); } catch (error) { console.log("出错了:" + error.message); // 输出错误信息 } ``` 在这个例子中,由于尝试将一个数字除以零,会触发一个运行时错误,该错误会被 `catch` 块捕获并处理[^2]。 #### 异步代码中的问题 需要注意的是,`try-catch` 通常只能捕获同步代码中的异常。对于异步操作,如定时器或回调函数,直接使用 `try-catch` 是无效的,因为异步代码会在未来的某个时间点执行,此时调用栈已经退出[^3]。 #### 使用 `finally` 块 除了 `try` 和 `catch`,还可以使用 `finally` 块来定义无论是否发生异常都会执行的代码。这在清理资源或释放锁等场景中非常有用: ```javascript try { const result = someFunction(); // 可能会抛出异常的代码 console.log(result); } catch (error) { console.error('An error occurred:', error.message); // 捕获并处理异常 } finally { console.log('Finally block executed.'); // 无论是否发生异常都会执行 } ``` 上述代码展示了如何结合 `finally` 块来确保某些代码始终被执行[^4]。 #### 高阶技巧与应用场景 `try-catch` 不仅限于简单的错误捕获,还可以用于更复杂的场景,例如隔离风险代码、精准捕获特定类型的异常以及确保资源的正确释放。合理使用 `try-catch` 能够显著提升程序的健壮性和用户体验[^5]。 ### 注意事项 - 确保只对可能抛出错误的代码部分使用 `try-catch`,避免滥用。 - 对于异步代码,建议结合 `Promise` 或 `async/await` 来实现更优雅的错误处理。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牙叔教程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值