问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

javascript中正确处理错误的方法有几种

发布网友 发布时间:2022-04-24 00:55

我来回答

1个回答

热心网友 时间:2022-06-13 02:56

1.使用window.onerror指定错误处理函数。
当有错误的时候,onerror会被callback。 当某个JavaScript block中有多个script错误时,第一个错误触发后(回调callback),当前Javascript block后面的script会被自动Drop忽略掉,不被执行。
如:

复制代码 代码如下:

<html >
<head>
<title>Test</title>
<script type="text/javascript">
window.onerror = function(message, url, line)
{
alert("Error.\nMessage:"+ message +"\nUrl:" + url + "\nLine:" + line)
return true;
}
</script>
</head>
<body>
<script type="text/javascript">
test();
test();
test();
test();
</script>
<script type="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支持了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.
如:

复制代码 代码如下:

<script type="text/javascript">
function CreateError()
{
throw new Error("Created error by custom.");
}
try
{
//throw a error from a function just want to see the call stack in firefox.
CreateError();
}
catch(error)
{
var errorMsg = ("Message: " + error.message + "\n");
if(typeof(error.stack)!=undefined)
{
//FF
errorMsg += ("Line Number: " + error.lineNumber + "\n");
errorMsg += ("File Name: " + error.fileName + "\n");
errorMsg += ("Stack Trace:\n" + error.stack + "\n");
}
else
{
//IE
errorMsg += ("Description: " + error.description + "\n");
errorMsg += ("Number: " + error.number + "\n");
}
alert(errorMsg);
}
finally
{
//alert("End try catch.message from finally block.");
}
</script>

Error.message是IE和FireFox都支持的属性。
IE支持description 和 number属性。
FF支持fileName lineNumber 和 stack 属性。
由于Javascript是弱类型的语言。
所以在catch部分只能catch一次,不能像C#这样的语言可以写多个catch,catch不同类型的exception。
但是可以用 instanceof ErrorType的方式实现类似的功能。
如:

复制代码 代码如下:

<script type="text/javascript">
try
{ //Syntax Error
//eval("alert a");

//Custom Error
throw new Error("An error occured.");
}
catch(error)
{
if(error instanceof SyntaxError)
{
alert("Syntax Error");
}
else if(error instanceof EvalError)
{
alert("Eval Error");
}
else if(error instanceof RangeError)
{
alert("Range Error");
}
else if(error instanceof ReferenceError)
{
alert("Reference Error");
}
else if(error instanceof TypeError)
{
alert("Type Error");
}
else if(error instanceof Error)
{
alert("Custon Error");
}
alert(error.message);
}
</script>

注:浏览器不会抛出Error类型的exception异常,所以如果捕获到Error类型的异常,可以确定这个异常是用户代码抛出的,不是浏览器抛出的。
Javascript的assert()

复制代码 代码如下:

function assert(bCondition, sErrorMsg) {
if (!bCondition) {
alert(sErrorMsg);
throw new Error(sErrorMsg);
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
金融企业会计包括什么 金融企业会计是什么6 金融企业会计名词解释 二战期间最大的军用飞机叫什么名,是那个国家生产的。 无锡机动车牌照补办程序是怎样的? 淘宝开店铺怎么收费?具体哪些费用? 淘宝网店入驻要多少钱? 淘宝商城开店铺多少钱 刑法中的徇私舞弊假释罪怎么量刑 徇私舞弊假释罪量刑最新法律规定 页面出现JavaScript错误如何处理 资生堂的三种男士乳液,哪种比较好? 资中县新农合办公室电话 资生堂的眼霜怎么样?值不值得买? 日韩化妆品真的比欧美品牌化妆品更适合亚洲人么? 薇娅、李佳琦纷纷“出圈”,淘宝中小主播该何去何从? 纷享生活的东西为什么有这么多人都去购买? 用哪款精华液可以消除眼部细纹? 多芬的洗面奶成分表只写了香精没有标明是不是人工 敏感肌可以用嘛 冻羊肚里面的绿色怎么去除,臭味怎么去除?很急请知道的告诉下。 羊肚煮好有臭味怎么办 超过水的羊肚还臭怎么办? vivox6怎么查开机使用日期 用牛羊肚子做菜有类似臭味是为什么,去掉那种味道? vivo手机怎么查看使用时间? 羊肚要怎么去气味??? 有的vivo手机管家里面没有屏幕使用时间。还能不能查屏幕使用时间? vivo手机软件使用的时间怎么看? 请高人推荐一下手机 请介绍手机!! 电脑左下角出现Javascript:void(0)是什么意思?怎么办? JavaScript错误怎么办? 网页显示javascript错误..怎么解决 javascript 异常处理使用总结 网页显示javascript错误怎么解决? javaScript Error:对象不支持此属性或方法 怎么解决? javascript错误解决方案 javascript出错,通常怎样去找原因并解决? javascript validation framework 运行时错误 怎么解决 dreamweaver发生JavaScript错误的解决办法 安装Dreamweaver时候,出现Javascript错误不知如何处理 JavaScript错误怎么解决 javascript脚本缺失或错误 怎么办? 手机出现javascripterror怎么解决 Dreamweaver运行时发生JavaScript错误怎么办 ASP中 js 错误处理 怎样鉴别一个黄金投资平台的安全性? 怎样判断一个黄金投资平台是否安全? 现货黄金中如何分辨黑平台和正规平台? 现货黄金中的黑平台是指什么?