JavaScript 中的 .stack 属性有什么用?
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>
在上面的示例中,错误被引发并打印为堆栈的内容。在此示例中,当调用错误的函数时,将显示上述输出。调用未在程序中定义的 writeFC() 函数而不是 rightFC() 函数。
广告