如何跳过或忽略javascript/jquery中的错误?

如何跳过或忽略javascript/jquery中的错误?,javascript,jquery,Javascript,Jquery,我假设调用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>

我假设调用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中编写脚本,但仍在执行?是否可以绕过或忽略文件2.js上的错误


谢谢。

您可以在错误代码周围使用try-catch块

try{

//code that causes an error

}catch(e){

functionToHandleError(e);
}
//continue from here
但是,只有当错误是外部库的已知条件/不可避免的问题,或者只有在用户输入错误时才应该这样做。你不应该用它来让程序不惜一切代价继续运行

避免错误的一些方法

  • 在调用函数之前,请检查函数是否存在
  • 在引用对象的属性之前,请检查对象是否存在
  • 如果涉及用户输入,请验证输入以检查其是否为预期类型/范围/etc
  • <> LI>如果这是一个加载顺序问题,考虑重新排序脚本,或者这是一个更大的应用程序,使用依赖性管理系统,如Reavjs
  • 如果在异步请求之后未定义对象,请记住,代码不会等待异步请求,并且在异步请求之后才会定义。处理提供的值的代码应该在回调函数中完成,或者使用不同的/承诺
  • 如果引用DOM元素,请考虑在加载DOM时运行的函数中启动JS代码,如jQuery的文档。就绪或本机窗口。
  • 如果javascript变量在声明时没有使用
    var
    关键字,或者附加到全局对象,则可以在声明变量以外的位置修改它们。Javascript也没有块作用域。确保您知道所有修改变量的位置,并尽可能限制变量的范围。尤其要避免使用太多的全局变量来保存状态,因为如果没有许多空/类型检查,就很难知道当前状态
处理错误的一些方法

  • 如果这是一个预期的问题(即如果输入可能为空并且需要不同的处理),最好事先用If语句检查它。如果您不想这样做,您可以使用try/catch来转换输入、请求新的输入,或者按照适当的方式对给定的输入进行操作

  • 如果这是一个意外的问题(即你不知道发生了什么),catch块可以是在开发过程中输出诊断信息的好地方。也就是说,不要只是捕获它并让它安静地失败,输出一条消息让您或其他开发人员知道它失败的地方,然后使用您最喜欢的浏览器的web开发人员工具检查当时的值,找出发生了什么,并添加处理以修复它

有什么不可以做的

  • 加入try/catch,然后让程序继续运行。如果不正确运行的代码是不必要的,请将其删除。如果它是必要的,并且不能正常工作,请修复它

  • 使用try-catch作为输入验证(即如果函数为null,它将抛出异常,我将捕获它,然后我知道函数为null)。只要可能,检查是否存在任何预期错误。当行为异常时,Try/catch应该处理“异常”,并且您需要使用其他代码路径或警告用户有问题


在try…catch块中包装导致错误的调用:

try {
   callNonExistentMethod();
}
catch (e) {
   //Handle the error if you wish.
}

我建议在对象(包括函数)周围添加适当的空检查 在假设它们存在之前,这样代码就会正常地失败

以下是一些想法:

您可以使用try-and-catch语句。并使用
!=空
条件

try{


}catch(e){

}

当您没有时间调试时,请尝试以下操作:

function stoperror() {
   return true;
}
叫它:

window.onerror = stoperror;

功能非常简单:创建一个始终返回true的函数,然后每当发生错误时,调用此函数(返回true并抑制错误)。

使用此函数可以避免“函数未定义”

//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");
}

try/catch,但实际上您应该修复潜在的问题。如果您知道有错误,但拒绝修复它们,那么为什么要包含该文件呢?由于错误,该文件的大部分可能无法正常运行。该文件的可能副本不适用于
Uncaught TypeError:无法读取未定义的属性“remove”,下面是我的代码:
var rows=document.getElementsByTagName(“tr”);对于(i=0;i