错误处理
不要丢掉异常处理中 err 参数
// ✓ 正确
run(function (err) {
if (err) throw err
window.alert('done')
})
// ✗ 错误
run(function (err) {
window.alert('done')
})
catch 中不要对错误重新赋值
try {
// ...
} catch (e) {
e = 'new value' // ✗ 错误
}
try {
// ...
} catch (e) {
const newVal = 'new value' // ✓ 正确
}
用 throw 抛错时,抛出 Error 对象而不是字符串
throw 'error' // ✗ 错误
throw new Error('error') // ✓ 正确
finally 代码块中不要再改变程序执行流程
try {
// ...
} catch (e) {
// ...
} finally {
return 42 // ✗ 错误
}
使用 Promise 一定要捕捉错误
asyncTask('google.com').catch(err => console.log(err)) // ✓ 正确