gpt4 book ai didi

javascript - 是否可以通过编程方式捕获 JavaScript 语法错误?

转载 作者:行者123 更新时间:2023-11-30 08:16:46 24 4
gpt4 key购买 nike

我不认为这是可行的,但想把它扔给社区以证实我的怀疑。

假设您正在使用另一种语言(如 Python、PHP 或 ASP)编写程序。该程序旨在构建另一个用 JavaScript 编写的程序。然而,不幸的是,第一个程序也不能避免错误。因此,偶尔,构建 JavaScript 程序的程序会做一些奇怪的事情并在 JavaScript 源代码中输出语法错误。现在一些用户去加载程序并且它基本上停止了,因为运行它的网络浏览器无法正确解析 JavaScript。这个用户可能不会高兴。我不会。

这引出了我的问题。是否可以编写一个错误处理程序来捕获这些类型的语法问题,从而使应用程序优雅地失败?

这是一个例子:

    <html>
<head>
<script type="text/javascript" charset="utf-8">
window.onerror = errorHandler;
function errorHandler(a,b,c) {
alert('horray! No wait, Booo!');
}
vara jfs;
</script>
</head>
<body>
Can this be done?
</body>
</html>

<html>
<head>
<script type="text/javascript" charset="utf-8">
try {
vara jfs;
} catch (e) {
alert('horray! No wait, Booo!');
}
</script>
</head>
<body>
Can this be done?
</body>
</html>

最佳答案

通常,一种编程语言会被解析,如果成功则可能会编译成另一种形式,如果成功则在硬件或虚拟机上解释/执行。仅仅因为代码通过了一个阶段,并不意味着它是有效代码。

你问的是运行在最后阶段的代码,是否能意识到第一部分遇到的问题并进行处理。

一些语言为其自身的解析和编译机制提供各种 Hook 。正如 Cheeso 提到的,eval 是 Javascript 调用此机制的方式。

与其将所有脚本包装在字符串中,不如将它们留在 javascript 文件中,然后使用以下 javascript(或类似的)将它们加载到您的主程序中。

 function load(file){
var client = new XMLHttpRequest();
client.open("GET", file, false);
client.send(null);
return client.responseText;
}

function include(file){
try {
eval(load(file));
} catch (e) {
alert("problem with file " + file);
}
}

关于javascript - 是否可以通过编程方式捕获 JavaScript 语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2526129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com