js错误处理

每个编程语言都有错误处理模块try catch

错误处理有四个关键字, try catch finally throw
前三个用来捕获错误,并处理错误,最后一个为抛出错误

1、错误处理有啥用呢?
  1、使程序继续执行,不因错误而终止,增强程序健壮性
  2、可控的处理错误,上传错误日志到服务器,集中整合错误信息,为后续优化或改bug提供有力依据

2、什么时候应该用错误处理?
  在调用别的模块可能发生无法预料错误的情况下使用
  如果知道这里会发生可预性错误,那么应该进行不同情况判断,执行不同操作,而不是使用try catch语句

3、错误处理语法使用 finally可以不加:
  try{
    //TODO
  } catch(err){
    sendServer(err)
    console.error(err) //打印错误 或者抛出错误throw err
  } finally {
    //TODO
  }

4、错误抛出语法使用:
  if(!Array.isArray(arr)) throw new TypeError('arr 不是数组类型') // 判断不是数组类型,抛出类型错误

5、上边演示了错误相关语法使用,接下来说说错误对象的属性和类型:
  错误对象为catch中的err,属性有name(错误的类型)、message(错误信息)、stack(发生错误的行列定位信息)
  错误类型为抛出错误时new的错误对象,TypeError就是错误类型,错误类型有,
    Error:所有错误的基类,别的错误都继承这个类
    TypeError:类型错误,变量或参数不是预期类型,例如 new 1 就会报此错误
    RangeError:范围错误,例如new Array(-1)
    EvalError:eval函数执行的代码块报的错误
    SyntaxError:语法错误,这个很常见了,例如 let 1
    URLError:与url相关函数参数不正确,主要是encodeURI()、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()和unescape()这六个函数
    ReferenceError:引用错误,引用未定义的变量引起的错误

6、利用错误基类自己做一个错误类型(示例为改版用法,必须在使用前定义,正确用法为建自己错误类并继承基类):
  function ParmaError(message){
    this.name = name;
    this.message = message;
  }
  ParmaError.prototype = new Error();


7、分析一个控制台输出的错误:

  TypeError: a为未知的类型
    at Object.<anonymous> (C:\Users\Administrator\Documents\HBuilderProjects\test\variableArea.js:9:8)
    at Module._compile (internal/modules/cjs/loader.js:999:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
    at Module.load (internal/modules/cjs/loader.js:863:32)
    at Function.Module._load (internal/modules/cjs/loader.js:708:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
    at internal/main/run_main_module.js:17:47

|||||||||||||分析上面信息,TypeError为错误类型,a为未知的类型为错误信息,下边的at开头的语句为错误发生语句定位信息。

 

posted @ 2021-08-30 09:44  中国计算机技术研究员  阅读(145)  评论(0编辑  收藏  举报