比方说,我在一个块中有 50 行 javascript 语句。如果任何一行出现错误,是否有一种方法可以让脚本继续运行,而无需为每一行使用大量的 try catch 块?
问问题
7312 次
2 回答
1
你的问题有点可疑。如果您允许在一个块中有 50 条语句独立失败,我得出的结论是这些语句之间没有关系。在这个例子中
var a = 1;
var b = a + 2;
b 变量依赖于 a 的结果。如果不是这样,我认为,将这些语句放在一个块中的唯一原因是它们必须同时执行。在这种情况下,我还假设这些语句更多是表达式,例如具有副作用的函数,例如 C#-void 函数或操作。你并不真正关心表达式的结果..
您需要将每个表达式放在 try-[catch | finally] 块,我别无选择。为了使其不那么冗长,您可以执行以下操作:
var tryF = function() {
// convert arguments to normal array
var args = [].slice.call(arguments, 0, arguments.length);
// if has function to execute
if(args.length > 0)
{
var func = args[0];//alert(func);
try {func();}
finally {
// if has next function to execute
if(args.length>1) {
tryF.apply(null, args.slice(1, args.length));
}
}
}
}
// usage
{
// first function has a error, it won't block the next
tryF(function() { aslert(1); }, function() { alert(1); });
}
于 2013-04-12T08:32:16.203 回答
1
尝试这个:
1: <head>
2: <script language="javascript">
3: function stoperror()
4: {
5: return true
6: }
7: window.onerror=stoperror();
8: </script>
9: </head>
于 2013-04-12T06:58:49.833 回答