比方说,我在一个块中有50行javascript语句。有没有一种方法可以让脚本在任何一行发生错误时继续运行,而不必为每行使用大量的try catch块?错误后继续执行javascript没有很多try catch语句
回答
你的问题是有点问题的。如果你在一个块中有50条语句可以独立失败,那么我得出的结论是这些语句之间没有关系。 在这个例子中
var a = 1;
var b = a + 2;
b变量依赖的结果。如果不是这种情况,我认为,这些陈述被放置在一个区块中的唯一原因是它们必须同时被执行。在这种情况下,我还假设那些语句更像带有副作用的函数,比如C#-void函数或Actions。你并不在意表达式的结果。
你需要把每个表达式放在try- [catch |终于]阻止,我没有别的选择。为了使它更简洁一些,你可以这样做如下:
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); });
}
在我的情况下,我有很多操作来处理复杂的对象例如:var a = bcd ....这里属性b,c,d可能是未定义的,但这对我的操作是正常的。但是我需要对每个对象执行大量的检查(比如if(b!= undefined && bc!= undefined ...)等等)或者将语句放在try {var a = bcd ..中。 }这块太笨拙了。 – konghou
试试这个:
1: <head>
2: <script language="javascript">
3: function stoperror()
4: {
5: return true
6: }
7: window.onerror=stoperror();
8: </script>
9: </head>
不起作用..脚本停止。顺便说一下https://developer.mozilla.org/en-US/docs/DOM/window.onerror说:“请注意,有些/许多错误事件不会触发window.onerror,你必须专门听取它们。” ..这些错误究竟是什么? – konghou
尝试抓住似乎是唯一的方式然后... http://stackoverflow.com/questions/2978291/on-error-resume-next-in-javascript – Fabiotocchi
- 1. 没有错误,但没有执行后尝试catch语句
- 2. Python:如何在异常停止后继续执行try语句
- 3. 在try/catch中捕获异常后继续执行循环
- 4. Try ... catch mysteriously继续执行代码(有时只有...)
- 5. 如果语句内的try catch语句没有检测到try/catch部分
- 6. 在try/catch语句中发生错误
- 7. 如何继续尝试catch语句的执行java中
- 8. 的Javascript:Ajax错误后继续执行
- 9. try/catch语句中有多少条语句?
- 10. 多个语句在try/catch块 - Java的
- 11. 使用try catch语句打印语句
- 12. 使用try/catch语句
- 13. 更少的try-catch语句?
- 14. try/catch语句和InputMismatchException时
- 15. 和try/catch语句嵌套
- 16. 在try/catch语句C#Monitor.Exit
- 17. 使用try/catch语句进行更新
- 18. Catch块后继续
- 19. try和catch语句有困难吗?
- 20. Java Do while语句在Try Catch语句后无限循环
- 21. 有没有办法在mex文件中制作try-catch语句?
- 22. C语言中的try-catch语句C
- 23. 语法错误与TRY内DROP CONSTRAINT/CATCH
- 24. Try&Catch中的语法错误
- 25. 多个ListenableFutures返回后继续执行
- 26. 多次执行后If语句出错
- 27. PHP返回语句后继续执行函数
- 28. 返回语句后继续执行方法
- 29. 你可以设置VS2008在try-catch语句中发生错误
- 30. GetWindowText函数()抛出的错误,而不是由try/catch语句
必须没有在你的代码的任何错误:)做适当的验证等.. – karaxuna
你必须使用全局错误处理一样, 阅读本问题http://stackoverflow.com/questions/951791/javascript-global-error-handling –
@karaxuna有时你会期望发生错误。 – C5H8NNaO4