JavaScript错误 JavaScript正则表达式 JavaScript调试 try 语句让你测试代码块的错误. catch 语句让你处理错误。 throw 语句让你创建自定义错误. finally 语句允许执行代码, 在 try 和 catch 后, 不管结果如何. 错误会发生! 当执行JavaScript代码,可能产生不同的错误. 错误可能是程序员编码的错误,由于错误的输入,和其他不可预见的事情. 在这个例子中我们故意产生一个错误: <p id="demo"></p> <script> try { adddlert("Welcome guest!"); } catch(err) { document.getElementById("demo").innerHTML = err.message; } </script> 让我试试 JavaScript 捕获 adddlert 错误, 并且执行catch代码去处理它. JavaScript try 和 catch try 语句让你定义要在执行时测试错误的代码块. catch 语句让你定义要执行的代码块,如果在try块中发生错误. JavaScript try 和 catch 成对出现: try { Block of code to try } catch(err) { Block of code to handle errors } JavaScript 抛出错误 当错误发生时,JavaScript通常会停止并生成错误信息. 这个术语是:JavaScript将抛出一个异常(抛出一个错误). JavaScript会创建一个有两个属性的错误对象:名称和信息。 throw 语句 throw 语句允许创建自定义错误。 技术上你可以抛出异常(抛出错误). 异常可以是JavaScript字符串,数字,布尔值或对象: throw "Too big"; // throw a text throw 500; // throw a number 如果try和catch一起使用并抛出,则可以控制程序流并生成自定义错误消息. 输入验证的例子 此示例检查输入。如果值是错误的,则抛出异常(错误). 异常(错误)由catch语句捕获,并显示自定义错误消息: <!DOCTYPE html> <html> <body> <p>Please input a number between 5 and 10:</p> <input id="demo" type="text"> <button type="button" onclick="myFunction()">Test Input</button> <p id="message"></p> <script> function myFunction() { var message, x; message = document.getElementById("message"); message.innerHTML = ""; x = document.getElementById("demo").value; try { if(x == "") throw "empty"; if(isNaN(x)) throw "not a number"; x = Number(x); if(x < 5) throw "too low"; if(x > 10) throw "too high"; } catch(err) { message.innerHTML = "Input is " + err; } } </script> </body> </html> 让我试试 HTML验证 上面的代码就是一个例子. 现代的浏览器通常会结合使用JavaScript和内置的HTML验证,使用预定义的验证规则的HTML属性定义: <input id="demo" type="number" min="5" max="10" step="1" 您可以在本教程的后面章节阅读更多关于表单验证的信息. finally 语句 finally 句允许您在try和catch之后执行代码,不管结果如何: try { Block of code to try } catch(err) { Block of code to handle errors } finally { Block of code to be executed regardless of the try / catch result } function myFunction() { var message, x; message = document.getElementById("message"); message.innerHTML = ""; x = document.getElementById("demo").value; try { if(x == "") throw "is empty"; if(isNaN(x)) throw "is not a number"; x = Number(x); if(x > 10) throw "is too high"; if(x < 5) throw "is too low"; } catch(err) { message.innerHTML = "Error: " + err + "."; } finally { document.getElementById("demo").value = ""; } } 让我试试 Error 对象 JavaScript有一个内置的对象的错误,提供了错误的信息时发生错误. error 对象提供两个有用的属性:名称和消息. Error 对象属性 属性描述 name设置或返回错误名 message设置或返回错误信息(字符串) Error 名称值 六个不同的值可以通过错误名称属性返回: 错误名称描述 EvalError在eval()函数时发生了一个错误 RangeError发生超出范围错误的数字 ReferenceError发生非法引用 SyntaxError发生语法错误 TypeError发生类型错误 URIError在encodeURI()中发生一个错误 下面描述了六个不同的值. Eval 错误 EvalError 表示eval()函数发生错误. 新版本的JavaScript不抛出任何EvalError。而是使用SyntaxError代替 范围错误 RangeError 如果使用了超出非法值范围的数字,则发生错误. 例如:不能将数字的有效位数设置为 500. var num = 1; try { num.toPrecision(500); // A number cannot have 500 significant digits } catch(err) { document.getElementById("demo").innerHTML = err.name; } 让我试试 引用错误 ReferenceError 如果使用(引用)尚未声明的变量,则引发: var x; try { x = y + 1; // y cannot be referenced (used) } catch(err) { document.getElementById("demo").innerHTML = err.name; } 让我试试 语法错误 SyntaxError 如果代码有语法错误,则引发 try { eval("alert('Hello)"); // Missing ' will produce an error } catch(err) { document.getElementById("demo").innerHTML = err.name; } 让我试试 类型错误 TypeError 如果使用超出预期类型范围的值,则引发: var num = 1; try { num.toUpperCase(); // You cannot convert a number to upper case } catch(err) { document.getElementById("demo").innerHTML = err.name; } 让我试试 URI 错误 URIError 如果你在一个URI函数中使用非法字符: try { decodeURI("%%%"); // You cannot URI decode these percent signs } catch(err) { document.getElementById("demo").innerHTML = err.name; } 让我试试 非标准错误对象属性 Mozilla和微软的一些非标准误差定义对象的属性: fileName (Mozilla) lineNumber (Mozilla) columnNumber (Mozilla) stack (Mozilla) description (Microsoft) number (Microsoft) 不要在公共网站中使用这些属性。他们不会在所有浏览器中工作。 JavaScript正则表达式 JavaScript调试