www.2527.com_澳门新葡8455手机版_新京葡娱乐场网址_
做最好的网站

Web前端谬误捕捉,js捕获至极管理_介绍JavaScript怎

2020-02-09 09:02 来源:未知

时间: 2018-03-26阅读: 1371标签: 异常处理

// 错误捕捉
try {
// 可能报错的代码
} catch (e) {
console.log(e.name ": " e.message);
}

js容错语句,就是js出错也不提示错误(防止浏览器右下角有个黄色的三角符号,要不用户体验不好)复制代码 代码如下: window.onerror=function(){return true;} 下面是为了获取js异常信息,方便开发者找回问题

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

下面介绍的是可能遇到的系统异常
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对象。他们都支持以下两种构造方法:
new Error();
new Error("异常信息");
这样手动抛出异常

1,try...catch...

举例说明:

复制代码 代码如下:

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

2 ,throw

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

复制代码 代码如下:

window.onerror

3,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中的异常处理

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()传递了无效的参数

在JavaScript可以使用try...catch来进行异常处理。例如: try { foo.bar { alert(e.name ": " e.message);} 目前我们可能得到的系统异常主要包含以下6种:

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

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 are passed invalid parameters 上面的六种异常对象都继承自Error对象。他们都支持以下两种构造方法: new Error; 手工抛出异常的方法如下:复制代码 代码如下:try { throw new Error { alert(e.name ": " e.message);}

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

如要判断异常信息的类型,可在catch中进行判断:

控制台输出:Error: Whoops!

复制代码 代码如下:try {foo.bar { if (e instanceof EvalError) { alert(e.name ":" e.message); } else if (e instanceof RangeError) {alert(e.name ": " e.message); } // etc }

Error具有下面一些主要属性:

description: 错误描述 . fileName: 出错的文件名 . lineNumber: 出错的行数 . message: 错误信息 name: 错误类型. number: 错误代码 . stack: 像Java中的Stack Trace一样的错误堆栈信息 . 因此为了更好的了解错误信息我们可以将catch部分改为如下形式:

复制代码 代码如下:try { foo.bar { if (browserType != BROWSER_IE) { alert("name: " e.name "message: " e.message "lineNumber: " e.lineNumber "fileName: " e.fileName "stack: " e.stack); } else { alert("name: " e.name "errorNumber: "

    • "message: " e.message "); } } "

JavaScript中的throw命令事实上可以抛出任何对象,并且我们可以在catch接受到此对象。例如:

复制代码 代码如下:try { throw new Date(); // 抛出当前时间对象 } catch { alert; // 使用本地格式显示当前时间 }

TAG标签:
版权声明:本文由澳门新葡8455手机版发布于Web前端,转载请注明出处:Web前端谬误捕捉,js捕获至极管理_介绍JavaScript怎