`

JavaScript中try...catch与onerror事件的使用

阅读更多
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 声明的 使用方法

    ### JavaScript Try...Catch 声明的使用方法详解 #### 一、引言 在Web开发过程中,确保程序能够优雅地处理错误对于提升用户体验至关重要。JavaScript 提供了 `try...catch` 结构来帮助开发者捕获和处理运行时错误。...

    javascript经典特效---JavaScript容错脚本.rar

    除了try...catch,还有其他一些错误处理方法,比如使用window.onerror全局事件处理器,它可以监听整个页面的所有未捕获错误。当发生错误时,onerror事件会被触发,提供错误信息,开发者可以通过这个事件来记录错误...

    W3C JavaScript 高级教程.rar

    JavaScript 是因特网上最流行的脚本语言,它存在于全世界所有 Web 浏览器中,能够增强用户与 Web 站点和 Web 应用程序之间的交互。 本教程是 w3school JavaScript 教程的高级版本。 本教程从 JavaScript 的历史...

    WEB开发 之 JavaScript 错误 - Throw、Try 和 Catch.docx

    在JavaScript中,还有许多其他的错误处理机制,例如使用OnError事件来捕捉错误、使用Console来记录错误等。但是,无论我们使用什么样的错误处理机制,都是为了确保我们的程序能够正确地运行,不受错误的影响。 在...

    javascript学习笔记.doc

    最后,`onerror` 事件是另一种捕获错误的方式,但在某些现代浏览器中可能不支持。`try...catch` 更为推荐,因为它提供了更灵活的错误处理机制。 总结,JavaScript的学习包括了基本的对话框使用,如警告、确认和提示...

    JS异常处理try..catch语句的作用和实例

    除了try..catch语句,window.onerror是一个全局错误处理函数。当脚本中未被捕获的错误发生时,window.onerror会被调用。通过返回true,可以阻止浏览器默认的错误处理行为,比如在控制台中打印错误信息,从而可以...

    前端代码异常监控方案window.onerror 1

    为了克服`try,catch`的局限性,可以考虑使用`window.onerror`事件监听器。`window.onerror`是一个全局错误处理程序,可以捕获任何未被`try,catch`捕获的运行时错误,包括语法错误。当错误发生时,`window.onerror`...

    捕获和分析JavaScript Error的方法

    JavaScript Error的捕获和分析是前端开发中至关重要的部分,特别...通过合理使用`try-catch`和`window.onerror`,以及适当的错误信息处理和发送策略,开发者可以更好地理解和解决运行时错误,提升产品的质量和可靠性。

    JavaScript错误处理

    然而,仅靠`onerror`事件处理函数并不能完全解决错误处理问题,因为有些错误可能在代码执行的深层嵌套中发生,这时我们需要使用更强大的错误处理机制,如`try...catch`语句。 2. **try...catch语句**:这是一种更...

    ASP中的JavaScript

    - **JavaScript错误处理**:使用`try...catch`语句捕获并处理JavaScript运行时错误。 - **ASP的On Error指令**:结合ASP的错误处理机制,可以对整个页面或特定代码块进行错误处理。 6. **性能优化** - **减少...

    tryjs实现JStrycatch错误捕捉

    目前retcode上报使用的log上报使用的是window.onerror上报,对于跨域脚本出现80%以上的错误信息是script error,这些对于开发者来说是无效的,所以需要使用try...catch可以抓取绝大多数作用域下的js运行错误堆栈信息...

    w3schoolJavaScript高级教程chm打包最新版本

    JavaScript 是因特网上最流行的脚本语言,它存在于全世界所有 Web 浏览器中,能够增强用户与 Web 站点和 Web 应用程序之间的交互。 本教程是 w3school JavaScript 教程的高级版本。 本教程从 JavaScript 的历史开始...

    catchall:捕获所有 javascript 错误

    中间件插件与超级重要的注意事项所有函数都包含在 try-catch 块中,因此将其用于生产代码将是一个糟糕的主意。例子创建一个名为script.js的文件: //only catch all if functions have been wrapped aroundif ( ...

    JavaScript完全自学宝典 源代码

    7.8.html onsubmit事件使用方法。 7.9.html 失去焦点时检验文本框的值。 7.10.html 获得焦点时文本框样式更改。 img.JPG onblur事件中加载的图片文件。 第8章(\c08) 示例描述:学习JavaScript中...

    可与Discord API进行交互的JavaScript库.zip

    《使用JavaScript库discord.js与Discord API交互》 在当今的社交软件领域,Discord以其高效的游戏社区和广泛的用户群而备受青睐。开发者们经常利用其开放的API(应用程序编程接口)来创建自定义功能,如聊天机器人...

    javascript中文帮助文档

    5. **异常处理**:VBScript使用On Error语句,JavaScript使用try...catch。 综上所述,"javascript中文帮助文档"和"vbscript"的中文帮助文档是学习这两种脚本语言的重要资源,Script56.CHM文件很可能是其中的一部分...

    IE功能汇总(javascript).htm

    10. **错误处理**:IE的错误处理机制与其他浏览器略有不同,比如`try...catch`语句的使用,以及`window.onerror`事件处理函数的实现。 通过"IE功能汇总(javascript).htm"这份文档,我们可以期望学习到如何在IE环境...

    javascript中文学习文档

    7. **错误处理**:通过try...catch语句捕获可能发生的错误,或者设置onerror事件处理器。 "征服Ajax - Web20开发技术详解试读版.pdf"可能会涵盖以上内容,并可能深入探讨Ajax的高级特性,如异步请求的优化、跨域...

    11-Error 错误.pdf

    在JavaScript和Node.js编程中,错误处理是至关重要的,因为它能够帮助...通过使用`try...catch`语句、监听`'error'`事件以及自定义错误类,我们可以更好地控制程序的运行时行为,防止因未处理的错误导致的意外中断。

Global site tag (gtag.js) - Google Analytics