JavaScript 中的 .stack 属性有什么用?

javascriptweb developmentfront end technology

JavaScript 中的 Stack 属性用于存储和跟踪错误,并保存错误类型、错误发生位置和错误原因等信息。错误来源的路径也存储在 JavaScript 的堆栈中。

Stack 是 JavaScript 中的错误类属性,还用于存储调用的函数以及调用函数的顺序。显示的错误的格​​式如下,第一行将显示错误的类型,然后打印冒号,然后打印出现错误的原因。第二行将显示出现错误的位置。

错误的格式

这是出现引用错误时显示的格式。

Uncaught ReferenceError ReferenceError: showStack is not defined //type:reason
at onclick (c:\Users\abdur\Desktop\demo2\aaa.html:31:35) // location of error

示例 1

以下是演示 stack 属性用法的示例。

function demo() { throw new Error("error"); } try{ demo() } catch(e) { console.log(e.stack) } demo();

注意 - Stack 是非标准属性,可能并非在所有环境中都可用。

示例 2

以下示例创建并抛出用户定义的错误,检索并显示生成的错误(对象)的 stack 属性 -

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Stack Property - Error class</title> </head> <body> <script> function showStack() { var value = document.getElementById("input").value; try { if (isNaN(value)) throw new Error('This is not a number'); } catch (e) { document.getElementById('a').innerHTML = e.stack; } } </script> <h3> Shows error if input is given wrong. </h3> <h5>Enter a integer</h5> <input type="text" id="input"> <button type="submit" value="Click" onclick="showStack()" style="width:60px;height:30px"> Press </button> <p id="a"></p> </body> </html>

执行时,上述程序会显示一个文本框和一个按钮,上面写着""。

如果您输入非数字值并单击按钮,则会生成错误,并显示生成的错误(类)堆栈的内容。

在上面的例子中,输入必须是整数。但如果用户输入的输入不是数字,则 stack 属性将存储错误并打印程序中的所有错误以及错误的位置和类型。

示例 3

现在,让我们检索并打印预定义错误的内容。

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Predefined Error</title> <script> function showStack() { try { writeFC(); } catch (e) { document.getElementById('a').innerHTML = e.stack ; } } function rightFC() { document.getElementById('a').innerHTML = e.stack ; } </script> </head> <body> <center> <h3>TUTORIALS POINT</h3> <p>Predefined error in JavaScript</p> <button onclick="showStack()">Press</button> <div id="erRes"></div> <p id="a"></p> </center> </body> </html>

在上面的例子中,错误被抛出并打印为堆栈的内容。在这个例子中,当调用错误的函数时,就会显示上面的输出。调用的不是 rightFC() 函数,而是 writeFC() 函数,而该函数在程序中没有定义。


相关文章