我想调用这样的3个javascript(jquery)文件:
<script type="text/javascript" src="js/file1.js"></script>
<script type="text/javascript" src="js/file2.js"></script>
<script type="text/javascript" src="js/file3.js"></script>
在 file2.js 上有脚本或函数出错,例如,被调用的函数不存在。由于 file2.js 中的错误是 file3.js 中的脚本而导致的后果不会被执行。
是否还有一种方法可以在 file3.js 中执行脚本?可以绕过或忽略 file2.js 上的错误吗?
谢谢。
答案 0 :(得分:23)
您可以在代码周围使用try catch块并显示错误
try{
//code that causes an error
}catch(e){
functionToHandleError(e);
}
//continue from here
但是,如果错误是已知条件/外部库不可避免的问题,或者仅在错误的用户输入时发生,那么您应该这样做。你不应该用它来让程序不惜一切代价继续运行。
避免错误的一些方法
var
关键字的情况下声明,或者附加到全局对象,则可以在声明它们之外的位置修改它们。 Javascript也没有块范围。确保您知道变量被修改的所有位置,并尽可能限制变量的范围。特别是避免使用太多的全局变量来保存状态,因为在没有很多空/类型检查的情况下很难知道当前状态。处理错误的一些方法
如果是预期的问题(IE,如果输入可能为空并需要不同的处理),理想情况下事先用if语句检查它。如果您不想这样做,可以使用try / catch来转换输入,请求新输入,或者根据给定的输入操作。
如果它是一个意外的问题(IE你不知道发生了什么),一个catch块可以是在开发过程中输出诊断信息的好地方。 IE,不要只是抓住它并让它静默失败,输出一条消息让你或其他开发人员知道失败的地方,然后使用你最喜欢的浏览器的web开发工具来检查当时的值,弄清楚发生了什么,并为该案例添加处理以修复它。
什么不该做
将try / catch放入,然后让程序继续运行。如果不需要正确运行的代码,请删除它。如果有必要且工作不正常,请修复它。
使用try catches作为输入验证(如果函数为null,则IE将抛出异常,我将捕获它,然后我知道函数为null)。尽可能检查是否存在任何预期错误。当行为异常时,Try / catches应处理“异常”,并且您需要关闭备用代码路径或警告用户出现问题。
答案 1 :(得分:9)
如果您没有时间进行调试,请尝试以下方法:
function stoperror() {
return true;
}
称之为:
window.onerror = stoperror;
功能非常简单:创建一个始终返回true的函数,然后每当发生错误时,调用此函数(返回true并抑制错误)。
答案 2 :(得分:1)
在try ... catch块中包装导致错误的调用:
try {
callNonExistentMethod();
}
catch (e) {
//Handle the error if you wish.
}
答案 3 :(得分:1)
我建议在对象(包括函数)周围添加适当的空值检查 在假设它们存在之前,以便代码优雅地失败。
以下是一些想法: Javascript check if function exists
答案 4 :(得分:1)
您可以使用try和catch语句。并使用!= null
条件
try{
}catch(e){
}
答案 5 :(得分:1)
您可以使用此
从“功能未定义”中解脱出来//Simple function that will tell if the function is defined or not
function is_function(func) {
return typeof window[func] !== 'undefined' && $.isFunction(window[func]);
}
//usage
if (is_function("myFunction") {
alert("myFunction defined");
} else {
alert("myFunction not defined");
}