您现在的位置是:首页 > 教程资讯 > 编程开发

javascript异常处理概述

2021-11-25 18:30:16【编程开发】人查看

简介 javascript 异常处理使用总结try…catch…finally window.onerror

JavaScript中的异常可以通过try try来处理.捕捉.最后,可以手动抛出语句或异常。1.使用尝试尝试.捕捉.语句来处理异常。如果js代码在执行过程中出现异常,将手动创建一个异常类对象,并将这个异常类对象提交给浏览器。这个过程叫做“抛出异常”。当浏览器接收到一个对象时,它将寻找能够处理这个异常的代码,并将当前的异常对象提交给它进行处理。这个过程叫做“捕捉异常”。try try的基本语法格式.捕捉.finally语句为:复制代码如下: try{//可能抛出异常的代码}catch(error){//异常发生时将执行的代码,而错误是发生的异常类对象}finally{//无条件执行的代码}在上面的语句中,catch语句紧跟在try语句之后,finally语句紧随其后。实际上,catch语句和finally语句都可以省略,但至少应该保留其中一个,并与try语句结合使用。try块中的语句不一定是引发异常的语句。任何JavaScript语句都可以用异常处理语句来处理,但没有必要这样做。当try块中某行的代码引发异常时,该行下面的代码将不会被执行,而是直接执行catch块的代码。在catch块中,catch语句后括号中的错误表示捕获的异常对象实例,它包含异常的详细信息,可以根据该信息进行适当的处理。如果在catch语句之后有finally语句,则继续执行finally块中的语句。finally块中的语句总是被执行,块中的语句通常会做一些最终的清理。如果在执行finally块之前遇到return语句、continue语句或break语句等语句,finally块中的代码也会在执行这些语句之前执行。如果异常处理语句只包含一次尝试.finally语句但没有带有补充异常的catch语句,try块中的语句将在finally块中的语句执行后直接执行,最后抛出异常。示例:复制代码如下:脚本try { var Date=new Date();date . test();//调用日期的未定义测试方法;document . wrire(' try block执行结束br ');} catch(错误){with (document) {write('发生了异常br ');Write('异常类型:' error . name ' br ');Write('异常消息:' error . message ');} }最后{ document.write('异常处理完成!');}/脚本结果:出现异常。异常类型:TypeError异常消息:对象不支持此属性或方法异常已处理!2.手动抛出异常除了浏览器在运行时抛出的异常,开发人员还可以自己抛出异常。手动异常抛出的语句为throw,其基本语法格式为:throw表达式;

try catch finally 语句说明

try catch finally是javascript语言提供的异常处理机制。语法如下:try {//这段代码从上到下运行,任意语句抛出异常,代码块结束运行}catch (e) {//如果try代码块中抛出异常,将执行catch代码块中的代码。//e是局部变量,用于指向Error对象或其他抛出的对象}finally {//无论try中的代码是否异常抛出(即使try代码块中有return语句),finally代码块始终会被执行。}try…catch…finally…除了try,catch和finally在语法上是可选的(其中一个必须可用)。也就是说,try…catch…finally…的语法有以下三种形式:try {//some code } catch(e){//some code } finally {//some code } try {//some code } catch(e){//some code } try {//some code } finally。有些代码}如果有某个catch,那么一旦try中的代码抛出异常,catch中的代码就会先执行,然后执行finally中的代码。如果没有catch语句,那么try中的代码抛出异常后,finally中的语句会先执行,然后try中抛出的异常会继续以异常的方式抛出。

不管try代码块的执行是如何终止的(异常、返回、自然终止),finally中的语句总是会被执行。因为finally的这个特性,finally通常被用来执行一些清洁工作。如果try中的代码被return、continue和break终止,则在执行finally语句后,Javascript引擎将在try中执行相应的return语句。

throw语句说明

throw语句已经在javascript1.4中实现,Try的语法很简单,如下throw表达式;的表达式可以是任何类型,这意味着抛出“有错误”或抛出1001是正确的。但是通常我们抛出一个错误对象或者错误对象的子类。我们稍后将介绍Error,首先看一个抛出的示例代码。函数阶乘(x) { //如果输入参数无效,抛出异常!if(x ^ 0)抛出新的Error('x不能为负');//否则,计算一个值并正常返回(var f=1;x1;f *=x,x - ) /*空*/;返回f;}

Error对象

Error对象及其子类在javascript1.5中实现,Error的构造函数有两种:newerror () newerror(消息)。错误有两个基本属性:名称和消息。消息用于指示异常的详细信息。名称指的是错误对象的构造函数。此外,不同的js引擎也为Error提供了一些扩展。例如,mozilla为fileName(文件名有异常)和linenumber(行号有异常)提供扩展名,而IE则为number(错误号)提供支持。然而,名称和消息是firefox和ie可以支持的两个基本属性。Javascript中的Error有几个子类,比如evalerror、rangeerror、reference error、语法错误、typeerror和uri错误。这里不详细描述它们的含义。读者可以在我提供的参考文献中找到相应的参考文献。00-1010当javascript代码出现错误时,js引擎会根据js的调用栈一步步寻找对应的catch。如果没有找到对应的catch处理程序或者catch处理程序本身有错误或者抛出了新的错误,它最终会将错误处理到浏览器,浏览器会以不同的方式向访问者显示错误消息(IE以黄色三角模式显示在左下角,而firefix则显示在错误控制台中)。在很多场景下,我们会发现这种错误提示方式不友好,提示信息被隐藏。那么,我们有机会定制这个错误提示方法吗?答案是肯定的,就是window.onerror属性。javascript的window对象有一个特殊的属性onerror。如果给window的onerror属性分配一个函数,那么每当这个窗口出现javascript错误时,就会调用这个函数,这意味着这个函数将成为这个窗口的错误处理句柄。//在对话框中显示错误消息,但不超过3window.onerror=function(msg,url,line){ if(one rror . num one rror . max){ alert(' error : ' msg ' \ n ' URL ' : ' line);返回真;} } one rror . max=3;one rror . num=0;在错误句柄上,有三个参数:错误消息提示、生成错误的javascript文档ulr以及发生错误的行号。onerroe句柄的返回值也非常重要。如果句柄返回true,则表示浏览器不需要对错误进行额外的处理,也就是说浏览器不需要显示错误消息。如果返回false,浏览器仍会提示错误消息。window . one rror=function(){ alert(" xx ");返回真;//如果语句被注释掉,浏览器中仍然会有错误提示,否则不会有错误提示。}函数throw Error(){ throw new Error(" cc ");}1

在开发HTML的过程中,我们无法避免一些Js异常。通常,我们不能依靠客户打开浏览器错误提示框(如上图)来为我们定位bug提供线索。通过使用window.onerror句柄,我们可以显示错误提示信息。客户只需要在出现错误时提供相应的截图,就可以帮助开发人员定位和分析javascript相关的错误。材料Mozilla Javascript1.5核心参考Javascript犀牛(JavaScript :权威指南)。