Javascript中错误处理的方法有哪些
今天小编给大家分享一下Javascript中错误处理的方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
我们知道由于我们使用的浏览器是不会抛出Error
类型的exception
异常的,所以如果我们在开发中捕获到Error
异常的话,我们是可以进行确定这个异常是属于我们的代码抛出的而不是我们在使用的浏览器抛出的。
1、使用window.onerror指定错误处理函数
当在开发中出现有错误的时候,onerror
是会被callback
的,如果在开发中某个JavaScript block
中有多个script
错误的时候,第一个错误触发之后,当前的JavaScript block
后面的script
就会被自动的Drop
忽略掉,不会被执行,我们来看看下面这个代码:
<html><head><title>Test</title><scripttype="text/javascript">window.onerror=function(message,url,line){alert("Error.\nMessage:"+message+"\nUrl:"+url+"\nLine:"+line)returntrue;}</script></head><body><scripttype="text/javascript">test();test();test();test();</script><scripttype="text/javascript">test();test();test();test();</script></body></html>
在上面这个代码中只有每个block
中第一个test();
会产生error触发我们的window.onerror
回调,后面的JavaScript会被忽略掉,而且在img
中也是会支持onerror
的代码如下所示:
< img src="pic.gif" onerror = "javascript:alert("An error occurred.");"/>
,由于onerror是浏览器支持的对象,所以它由浏览器来决定是否可以使用,不是DOM标准。
2、使用JavaScript中的try catch throw 处理异常
在JavaScript中定义异常;
(1)、EvalError: An error occurs in the eval() function.
(2)、RangeError: A number value is greater then or less then the number that can be represented in Javascript(Number.MAX_VALUE and Number.MIN_VAKUE).
(3)、ReferenceError: An illegal reference is used.
(4)、SyntaxError: A syntax error occus inside of an eval() function call. All other syntax error are reorted by the browser and cannot be handled with a try...catch statement.
(5)、TypeError. A variables type is unexpected. 6.URIError. An error ocuurs in the encodeURI() or the decodeURI() function.
代码如下如下所示:
<scripttype="text/javascript">functionCreateError(){thrownewError("Createderrorbycustom.");}try{//throwaerrorfromafunctionjustwanttoseethecallstackinfirefox.CreateError();}catch(error){varerrorMsg=("Message:"+error.message+"\n");if(typeof(error.stack)!=undefined){//FFerrorMsg+=("LineNumber:"+error.lineNumber+"\n");errorMsg+=("FileName:"+error.fileName+"\n");errorMsg+=("StackTrace:\n"+error.stack+"\n");}else{//IEerrorMsg+=("Description:"+error.description+"\n");errorMsg+=("Number:"+error.number+"\n");}alert(errorMsg);}finally{//alert("Endtrycatch.messagefromfinallyblock.");}</script>
而且在我们的代码中,Error.message
是IE
和FireFox
都支持的属性, 然而IE
支持description
和number
属性。
FF
支持fileName
lineNumber
和stack
属性, 由于Javascript
是弱类型的语言, 所以在catch
部分只能catch
一次,不能像C#
这样的语言可以写多个catch
,catch
不同类型的exception
。 但是可以用instanceof
ErrorType
的方式实现类似的功能。代码如下所示:
<scripttype="text/javascript">try{//SyntaxError//eval("alerta");//CustomErrorthrownewError("Anerroroccured.");}catch(error){if(errorinstanceofSyntaxError){alert("SyntaxError");}elseif(errorinstanceofEvalError){alert("EvalError");}elseif(errorinstanceofRangeError){alert("RangeError");}elseif(errorinstanceofReferenceError){alert("ReferenceError");}elseif(errorinstanceofTypeError){alert("TypeError");}elseif(errorinstanceofError){alert("CustonError");}alert(error.message);}</script>
关于JavaScript
的assert()
这方面的话我们可以看下面这串代码:
functionassert(bCondition,sErrorMsg){ if(!bCondition){ alert(sErrorMsg); thrownewError(sErrorMsg); }}
以上就是“Javascript中错误处理的方法有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。