我认为这是不可行的,但想将其扔给社区以证实我的怀疑。
假设您正在使用另一种语言(例如 Python、PHP 或 ASP)编写程序。该程序旨在构建另一个用 JavaScript 编写的程序。然而,不幸的是,第一个程序也不能避免错误。因此,偶尔,构建 JavaScript 程序的程序会执行一些奇怪的操作,并在 JavaScript 源代码中输出语法错误。现在,一些用户加载该程序,但它基本上停止了,因为运行该程序的 Web 浏览器无法正确解析 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>
or
<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>
一般来说,编程语言会被解析,如果成功,可能会编译成另一种形式,如果成功,则在硬件或虚拟机上解释/执行。仅仅因为代码通过了一个阶段,并不意味着它是有效的代码。
您询问在最后阶段运行的代码是否可以意识到第一部分中遇到的问题并处理它。
有些语言为其自己的解析和编译机制提供了各种挂钩。正如奇索提到的,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);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)