错误处理

不要丢掉异常处理中 err 参数

  1. // ✓ 正确
  2. run(function (err) {
  3. if (err) throw err
  4. window.alert('done')
  5. })
  1. // ✗ 错误
  2. run(function (err) {
  3. window.alert('done')
  4. })

catch 中不要对错误重新赋值

  1. try {
  2. // ...
  3. } catch (e) {
  4. e = 'new value' // ✗ 错误
  5. }
  6. try {
  7. // ...
  8. } catch (e) {
  9. const newVal = 'new value' // ✓ 正确
  10. }

用 throw 抛错时,抛出 Error 对象而不是字符串

  1. throw 'error' // ✗ 错误
  2. throw new Error('error') // ✓ 正确

finally 代码块中不要再改变程序执行流程

  1. try {
  2. // ...
  3. } catch (e) {
  4. // ...
  5. } finally {
  6. return 42 // ✗ 错误
  7. }

使用 Promise 一定要捕捉错误

  1. asyncTask('google.com').catch(err => console.log(err)) // ✓ 正确