JavaScript - 捕获错误
当我们在网上冲浪时,总会看到带有 runtime 错误的 Javascript 警告框,同时会询问我们“是否进行 debug?”。像这样的错误信息或许对开发人员有用,对用户则未必。当错误发生时,他们往往会选择离开这个站点。
本节向你讲解如何捕获和处理 Javascript 的错误消息,这样就可以为受众提供更多的便利。
有两种在网页中捕获错误的方法:
* 使用 try...catch 语句。(在 IE5+、Mozilla 1.0、和 Netscape 6 中可用)
* 使用 onerror 事件。这是用于捕获错误的老式方法。(Netscape 3 以后的版本可用)
注意:chrome、opera 和 safari 浏览器不支持 onerror 事件。
try...catch 的作用是测试代码中的错误。
如何编写 try...catch 语句。
try...catch 可以测试代码中的错误。try 部分包含需要运行的代码,而 catch 部分包含错误发生时运行的代码。
语法:
try
{
//在此运行代码
}
catch(err)
{
//在此处理错误
}
注意:try...catch 使用小写字母。大写字母会出错。
例子1
用 try...catch 语句重新修改了脚本。由于误写了 alert(),所以错误发生了。不过这一次,catch 部分捕获到了错误,并用一段准备好的代码来处理这个错误。这段代码会显示一个自定义的出错信息来告知用户所发生的事情。
<html>
<head>
<script type="text/javascript">
var txt=""
function message()
{
try
{
adddlert("Welcome guest!")
}
catch(err)
{
txt="本页中存在错误。\n\n"
txt+="错误描述:" + err.description + "\n\n"
txt+="点击“确定”继续。\n\n"
alert(txt)
}
}
</script>
</head>
<body>
<input type="button" value="查看消息" onclick="message()" />
</body>
</html>
实例 2
下一个例子会显示一个确认框,让用户来选择在发生错误时点击确定按钮来继续浏览网页,还是点击取消按钮来回到首页。如果 confirm 方法的返回值为 false,代码会把用户重定向到其他的页面。如果 confirm 方法的返回值为 true,那么代码什么也不会做。
<html>
<head>
<script type="text/javascript">
var txt=""
function message()
{
try
{
adddlert("Welcome guest!")
}
catch(err)
{
txt="There was an error on this page.\n\n"
txt+="Click OK to continue viewing this page,\n"
txt+="or Cancel to return to the home page.\n\n"
if(!confirm(txt))
{
document.location.href="http://www.w3school.com.cn/"
}
}
}
</script>
</head>
<body>
<input type="button" value="View message" onclick="message()" />
</body>
</html>
onerror 事件
我们马上会讲解 onerror 事件。但首先您需要学习如何使用 throw 语句来创建异常。throw 语句可以与 try...catch 语句一起使用。
throw 声明的作用是创建 exception(异常)。你可以把这个声明与 try...catch 声明配合使用,以达到控制程序流并产生精确错误消息的目的。
语法:
throw(exception)
exception 可以是字符串、整数、逻辑值或者对象。
注意:使用小写字母编写 throw。使用大写字母会出错!
实例 1
下面的实例的作用是测定变量 x 的值。如果 x 的值大于 10 或者小于 0,错误就会被抛出 (throw)。这个错误被 catch 的参数捕获后,就会显示出自定义的出错信息。
<html>
<body>
<script type="text/javascript">
var x=prompt("Enter a number between 0 and 10:","")
try
{
if(x>10)
throw "Err1"
else if(x<0)
throw "Err2"
}
catch(er)
{
if(er=="Err1")
alert("Error! The value is too high")
if(er == "Err2")
alert("Error! The value is too low")
}
</script>
</body>
</html>
只要页面中出现脚本错误,就会产生
onerror 事件。
如果需要利用 onerror 事件,就必须创建一个处理错误的函数。你可以把这个函数叫作 onerror 事件处理器 (onerror event handler)。这个事件处理器使用三个参数来调用:msg(错误消息)、url(发生错误的页面的 url)、line(发生错误的代码行)。
语法:
onerror=handleErrfunction handleErr(msg,url,l)
{
//Handle the error here
return true or false
}
浏览器是否显示标准的错误消息,取决于 onerror 的返回值。如果返回值为 false,则在控制台 (JavaScript console) 中显示错误消息。反之则不会。
实例:
下面的例子展示如何使用 onerror 事件来捕获错误:
<html>
<head>
<script type="text/javascript">
onerror=handleErr
var txt=""
function handleErr(msg,url,l)
{
txt="There was an error on this page.\n\n"
txt+="Error: " + msg + "\n"
txt+="URL: " + url + "\n"
txt+="Line: " + l + "\n\n"
txt+="Click OK to continue.\n\n"
alert(txt)
return true
}
function message()
{
adddlert("Welcome guest!")
}
</script>
</head>
<body>
<input type="button" value="View message" onclick="message()" />
</body>
</html>
分享到:
相关推荐
### JavaScript Try...Catch 声明的使用方法详解 #### 一、引言 在Web开发过程中,确保程序能够优雅地处理错误对于提升用户体验至关重要。JavaScript 提供了 `try...catch` 结构来帮助开发者捕获和处理运行时错误。...
除了try...catch,还有其他一些错误处理方法,比如使用window.onerror全局事件处理器,它可以监听整个页面的所有未捕获错误。当发生错误时,onerror事件会被触发,提供错误信息,开发者可以通过这个事件来记录错误...
JavaScript 是因特网上最流行的脚本语言,它存在于全世界所有 Web 浏览器中,能够增强用户与 Web 站点和 Web 应用程序之间的交互。 本教程是 w3school JavaScript 教程的高级版本。 本教程从 JavaScript 的历史...
在JavaScript中,还有许多其他的错误处理机制,例如使用OnError事件来捕捉错误、使用Console来记录错误等。但是,无论我们使用什么样的错误处理机制,都是为了确保我们的程序能够正确地运行,不受错误的影响。 在...
最后,`onerror` 事件是另一种捕获错误的方式,但在某些现代浏览器中可能不支持。`try...catch` 更为推荐,因为它提供了更灵活的错误处理机制。 总结,JavaScript的学习包括了基本的对话框使用,如警告、确认和提示...
除了try..catch语句,window.onerror是一个全局错误处理函数。当脚本中未被捕获的错误发生时,window.onerror会被调用。通过返回true,可以阻止浏览器默认的错误处理行为,比如在控制台中打印错误信息,从而可以...
为了克服`try,catch`的局限性,可以考虑使用`window.onerror`事件监听器。`window.onerror`是一个全局错误处理程序,可以捕获任何未被`try,catch`捕获的运行时错误,包括语法错误。当错误发生时,`window.onerror`...
JavaScript Error的捕获和分析是前端开发中至关重要的部分,特别...通过合理使用`try-catch`和`window.onerror`,以及适当的错误信息处理和发送策略,开发者可以更好地理解和解决运行时错误,提升产品的质量和可靠性。
然而,仅靠`onerror`事件处理函数并不能完全解决错误处理问题,因为有些错误可能在代码执行的深层嵌套中发生,这时我们需要使用更强大的错误处理机制,如`try...catch`语句。 2. **try...catch语句**:这是一种更...
- **JavaScript错误处理**:使用`try...catch`语句捕获并处理JavaScript运行时错误。 - **ASP的On Error指令**:结合ASP的错误处理机制,可以对整个页面或特定代码块进行错误处理。 6. **性能优化** - **减少...
目前retcode上报使用的log上报使用的是window.onerror上报,对于跨域脚本出现80%以上的错误信息是script error,这些对于开发者来说是无效的,所以需要使用try...catch可以抓取绝大多数作用域下的js运行错误堆栈信息...
JavaScript 是因特网上最流行的脚本语言,它存在于全世界所有 Web 浏览器中,能够增强用户与 Web 站点和 Web 应用程序之间的交互。 本教程是 w3school JavaScript 教程的高级版本。 本教程从 JavaScript 的历史开始...
中间件插件与超级重要的注意事项所有函数都包含在 try-catch 块中,因此将其用于生产代码将是一个糟糕的主意。例子创建一个名为script.js的文件: //only catch all if functions have been wrapped aroundif ( ...
7.8.html onsubmit事件使用方法。 7.9.html 失去焦点时检验文本框的值。 7.10.html 获得焦点时文本框样式更改。 img.JPG onblur事件中加载的图片文件。 第8章(\c08) 示例描述:学习JavaScript中...
《使用JavaScript库discord.js与Discord API交互》 在当今的社交软件领域,Discord以其高效的游戏社区和广泛的用户群而备受青睐。开发者们经常利用其开放的API(应用程序编程接口)来创建自定义功能,如聊天机器人...
5. **异常处理**:VBScript使用On Error语句,JavaScript使用try...catch。 综上所述,"javascript中文帮助文档"和"vbscript"的中文帮助文档是学习这两种脚本语言的重要资源,Script56.CHM文件很可能是其中的一部分...
10. **错误处理**:IE的错误处理机制与其他浏览器略有不同,比如`try...catch`语句的使用,以及`window.onerror`事件处理函数的实现。 通过"IE功能汇总(javascript).htm"这份文档,我们可以期望学习到如何在IE环境...
7. **错误处理**:通过try...catch语句捕获可能发生的错误,或者设置onerror事件处理器。 "征服Ajax - Web20开发技术详解试读版.pdf"可能会涵盖以上内容,并可能深入探讨Ajax的高级特性,如异步请求的优化、跨域...
在JavaScript和Node.js编程中,错误处理是至关重要的,因为它能够帮助...通过使用`try...catch`语句、监听`'error'`事件以及自定义错误类,我们可以更好地控制程序的运行时行为,防止因未处理的错误导致的意外中断。