在 JavaScript 中,finally 的作用是什么?
在 JavaScript 中,finally 是一个代码块或语句,在使用 try 和 catch 块处理错误时,无论如何都会执行。这些 JavaScript 中的 try、catch 和 finally 块将执行可能出错并可能导致程序行为异常(突然终止)的代码。
这个 finally 块位于 try 和 catch 块之后,如果 try 或 catch 块中的任何一个被执行,它都一定会被执行。finally 块允许我们定义必须执行的操作,而不管某些代码成功或失败。
在 JavaScript 中进行错误处理时,try 块是必须的,而 catch 和 finally 是可选的。
这三个块可以组合使用,例如 try 与 catch 和 finally 同时使用,或者 try 块与另外两个块中的任何一个块一起使用。
try 可以不带任何块使用。但是,要使用 finally,则必须使用 try 块。
语法
这是 JavaScript 中 finally() 块以及 try 和 catch 块的语法:
try{ //The code where the chances of error can be predicted } catch{ //The code which will be executed if try block is executed } finally{ //The code which will be definitely executed after the try and catch blocks. }
try 块中提到的错误主要是由于一些运行时问题和程序员造成的错误。程序的执行顺序如下。
首先,执行 try 块中的代码,如果发生任何错误,则编译器会搜索 catch 块,如果存在 catch 块,则执行其中的内容。
然后,执行 finally 块。下面将通过示例说明 finally 及其他 try 和 catch 块的实现。
示例 1
此示例演示了 try 和 catch 同时使用时 finally 块的执行:
<!DOCTYPE html> <html> <head> </head> <body> <h2> Finally - JavaScript</h2> <button type="button" onclick="forFinally()"> Click the button to show the result </button> <p id="try"> </p> <p id="catch"> </p> <p id="finally"> </p> <script type="text/javascript"> function forFinally() { try { document.getElementById("try").innerHTML = " Try block is executed "; } catch (error) { document.getElementById("catch").innerHTML = " Catch block is executed additional Information: " + error; } finally { document.getElementById("finally").innerHTML = "Finally block is executed "; } } </script> </body> </html>
执行上述程序后,将显示一个按钮。
单击它将显示 try 和 catch 执行的结果。
示例 2
以下是 try、catch 和 finally 的另一个示例:
<!DOCTYPE html> <html> <body> <h2>Finally - JavaScript</h2> <p>Please input a number between 5 and 10:</p> <input id="demo" type="text"> <button type="button" onclick="tryFinally()">Test Input</button> <p id="try"></p> <p id="message"></p> <script> function tryFinally() { const message = document.getElementById("message"); message.innerHTML = ""; let x = document.getElementById("demo").value; try { if(x == "") document.getElementById("try").innerHTML = "Please provide the specific input as mentioned"; if(isNaN(x)) document.getElementById("try").innerHTML = "Its is Not a Number"; if(x > 10) document.getElementById("try").innerHTML = "Input is greater than 10"; if(x < 5) document.getElementById("try").innerHTML = "Given input is less than 5"; if(x>5 && x<10) document.getElementById("try").innerHTML = "Given input is as required"; } finally{ message.innerHTML = "This is the finally block executed after the try block" } } </script> </body> </html>
执行上述程序后,将显示一个文本框和一个按钮,要求输入 5 到 10 之间的数字。
如果输入相同的数字(5 到 7 之间的数字),则会显示一条成功消息“输入符合要求”。
如果输入的值大于 10,则消息为“输入大于 10”。
同样,如果输入的值小于 5,则输出消息为“输入小于 5”。
在所有情况下,finally 都会在 try 块之后执行,显示“这是 try 块执行后执行的 finally 块”。