js捕获异常处理_介绍JavaScript如何捕获常见异常【Throw、Try 和 Catch】

更新日期: 2018-03-26阅读: 3.9k标签: 异常处理

JavaScript和其他语言一样,都拥有捕获异常的机制。js中异常捕获的语句同样分为了三部分:try用于捕获异常,catch用于处理异常,finally用于关闭资源等后续操作。js中创建自定义错误则使用rhrow,用于抛出异常。


举例说明:

try{
     throw "error"
}catch(e){
    console.log(e.name);
}finally{
   console.log("finally")
}

控制台依次输出:error   finally。使用try catch能够很好的捕获异常并对应进行相应处理,不至于让页面挂掉,但是其存在一些弊端,比如需要在捕获异常的代码上进行包裹,会导致页面臃肿不堪,不适用于整个项目的异常捕获。


window.onerror

相比try catch来说window.onerror提供了全局监听异常的功能: 

window.onerror = function(errorMessage, scriptURI, lineNo, columnNo, error) {
    console.log('errorMessage: ' + errorMessage); // 异常信息
    console.log('scriptURI: ' + scriptURI); // 异常文件路径
    console.log('lineNo: ' + lineNo); // 异常行号
    console.log('columnNo: ' + columnNo); // 异常列号
    console.log('error: ' + error); // 异常堆栈信息
};

 

js中常见的系统异常:

  • EvalError: raised when an error occurs executing code in eval()   当一个错误发生在()执行的代码
  • RangeError: raised when a numeric variable or parameter is outside of its valid range  当一个数值变量或参数超出其有效范围时引发的
  • ReferenceError: raised when de-referencing an invalid reference  无效的饮用
  • SyntaxError: raised when a syntax error occurs while parsing code in eval()  当发生语法错误在()解析代码,而
  • TypeError: raised when a variable or parameter is not a valid type  当一个变量或参数不是一个有效的类型时引发
  • URIError: raised when encodeURI() or decodeURI() are passed invalid parameters  当encodeuri()或decodeuri()传递了无效的参数

注:上面的六种异常对象都继承自Error对象: 

try {
  throw new Error("Whoops!");
} catch (e) {
  console.log(e.name + ": " + e.message);
}

控制台输出:Error: Whoops!


链接: https://www.fly63.com/article/detial/548

JavaScript的异常处理

Javascript 引擎是单线程的,因此一旦遇到异常,Javascript 引擎通常会停止执行,阻塞后续代码并抛出一个异常信息,因此对于可预见的异常,我们应该捕捉并正确展示给用户或开发者。

图片懒加载及异常处理

在日常页面开发中,常常会涉及到图片的展示。有时候当图片资源过多时,我们希望能将图片延迟加载,同时当图片加载失败后,能用一张默认图片去代替其进行展示

Nodejs中request出现ESOCKETTIMEDOUT解决方案

使用Nodejs的request批量请求某一个接口,由于接口超时,出现 ESOCKETTIMEDOUT,程序中断,为了让程序遇到 ESOCKETTIMEDOUT 之后能够继续执行下去,需要对 request 部分加上 try...catch

关于JS面向对象的错误与异常处理方式

错误,指程序中的非正常运行状态,在其它编程语言中称为“异常”或“错误”。解释器会为每个错误情形创建并抛出一个Error对象,其中包含错误的描迹信息。

Promise 和 async/await 的异常处理,原来还有这种坑!

Promise创建时需要传入一个function,在这个function执行过程中,如果出现了异常则会对外抛出。外部有2种方式来捕获这个异常:

如何优雅地给对象的所有方法添加异常处理

为了保证健壮性,我们要对所有可能报错的代码添加异常处理,但是每个方法都添加 try catch 又太麻烦,所以我们利用 Proxy 实现了代理,透明的给对象的所有方法都添加上了异常处理。

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!