精华内容
下载资源
问答
  • JavaScript 错误以及如何修复

    千次阅读 2015-02-09 23:44:12
    有个查找错误含义,及修复措施的列表,是不是很有用? 以下是奇怪的 JavaScript 错误列表。同样的错误,不同的浏览器会给出不同的消息,因此有一些不同的例子。 如何读懂错误? 首先,让我们快速看下错误信息的...

    JavaScript 调试是一场噩梦:首先给出的错误非常难以理解,其次给出的行号不总有帮助。有个查找错误含义,及修复措施的列表,是不是很有用?

    以下是奇怪的 JavaScript 错误列表。同样的错误,不同的浏览器会给出不同的消息,因此有一些不同的例子。

    如何读懂错误?

    首先,让我们快速看下错误信息的结构。理解结构有助于理解错误,如果遇到列表之外的错误会减少麻烦。

    Chrome 中典型的错误像这样:

     

     

    1
    
    Uncaught TypeError: undefined is not a function
    

     

     

    错误的结构如下:

    1. Uncaught TypeError:这部分信息通常不是很有用。Uncaught表示错误没有被catch语句捕获,TypeError是错误的名字。

    2. undefined is not a function:这部分信息,你必须逐字阅读。比如这里表示代码尝试使用undefined,把它当做一个函数。

    其它基于 webkit 的浏览器,比如 Safari ,给出的错误格式跟 Chrome 很类似。Firefox 也类似,但是不总包含第一部分,最新版本的 IE 也给出比 Chrome 简单的错误 - 但是在这里,简单并不总代表好。

    以下是真正的错误。

    Uncaught TypeError: undefined is not a function

    相关错误:number is not a function, object is not a function, string is not a function, Unhandled Error: ‘foo’ is not a function, Function Expected

    当尝试调用一个像方法的值时,这个值并不是一个方法。比如:

     

     

    1
    2
    
    var foo = undefined;
    foo();
    

     

     

    如果你尝试调用一个对象的方法时,你输错了名字,这个典型的错误很容易发生。

     

     

    1
    
    var x = document.getElementByID('foo');
    

     

     

    由于对象的属性不存在,默认是undefined,以上代码将导致这个错误。

    尝试调用一个像方法的数字,“number is not a function” 错误出现。

    如何修复错误:确保方法名正确。这个错误的行号将指出正确的位置。

    Uncaught ReferenceError: Invalid left-hand side in assignment

    相关错误:Uncaught exception: ReferenceError: Cannot assign to ‘functionCall()’, Uncaught exception: ReferenceError: Cannot assign to ‘this’

    尝试给不能赋值的东西赋值,引起这个错误。

    这个错误最常见的例子出现在 if 语句使用:

     

     

    1
    
    if(doSomething() = 'somevalue')
    

     

     

    此例中,程序员意外地使用了单个等号,而不是双等号。“left-hand side in assignment” 提及了等号左手边的部分,因此你可以看到以上例子,左手边包含不能赋值的东西,导致这个错误。

    如何修复错误:确保没有给函数结果赋值,或者给this关键字赋值。

    Uncaught TypeError: Converting circular structure to JSON

    相关错误:Uncaught exception: TypeError: JSON.stringify: Not an acyclic Object, TypeError: cyclic object value, Circular reference in value argument not supported

    把循环引用的对象,传给JSON.stringify总会引起错误。

     

     

    1
    2
    3
    4
    
    var a = { };
    var b = { a: a };
    a.b = b;
    JSON.stringify(a);
    

     

     

    由于以上的ab循环引用彼此,结果对象无法转换成 JSON。

    如何修复错误:移除任何想转换成 JSON 的对象中的循环引用。

    Unexpected token ;

    相关错误:Expected ), missing ) after argument list

    JavaScript 解释器预期的东西没有被包含。不匹配的圆括号或方括号通常引起这个错误。

    错误信息可能有所不同 - “Unexpected token ]” 或者 “Expected {” 等。

    如何修复错误:有时错误出现的行号并不准确,因此很难修复。

    • [ ] { } ( ) 这几个符号不配对常常导致出错。检查所有的圆括号和方括号是否配对。行号指出的不仅是问题字符。
    • Unexpected / 跟正则表达式有关。此时行号通常是正确的。
    • Unexpected ; 对象或者数组字面量里面有个 ; 通常引起这个错误,或者函数调用的参数列表里有个分号。此时的行号通常也是正确的。

    Uncaught SyntaxError: Unexpected token ILLEGAL

    相关错误:Unterminated String Literal, Invalid Line Terminator

    一个字符串字面量少了结尾的引号。

    如何修复错误:确保所有的字符串都有结束的引号。

    Uncaught TypeError: Cannot read property ‘foo’ of null, Uncaught TypeError: Cannot read property ‘foo’ of undefined

    相关错误:TypeError: someVal is null, Unable to get property ‘foo’ of undefined or null reference

    尝试读取null或者undefined,把它当成了对象。例如:

     

     

    1
    2
    
    var someVal = null;
    console.log(someVal.foo);
    

     

     

    如何修复错误:通常由于拼写错误导致。检查错误指出的行号附近使用的变量名是否正确。

    Uncaught TypeError: Cannot set property ‘foo’ of null, Uncaught TypeError: Cannot set property ‘foo’ of undefined

    相关错误:TypeError: someVal is undefined, Unable to set property ‘foo’ of undefined or null reference

    尝试写入null或者undefined,把它当成了一个对象。例如:

     

     

    1
    2
    
    var someVal = null;
    someVal.foo = 1;
    

     

     

    如何修复错误:也是由于拼写错误所致。检查错误指出的行号附近的变量名。

    Uncaught RangeError: Maximum call stack size exceeded

    相关错误:Related errors: Uncaught exception: RangeError: Maximum recursion depth exceeded, too much recursion, Stack overflow

    通常由程序逻辑 bug 引起,导致函数的无限递归调用。

    如何修复错误:检查递归函数中可能导致无限循环 的 bug 。

    Uncaught URIError: URI malformed

    相关错误:URIError: malformed URI sequence

    无效的 decodeURIComponent 调用所致。

    如何修复错误:按照错误指出的行号,检查decodeURIComponent调用,它是正确的。

    XMLHttpRequest cannot loadhttp://some/url/. No ‘Access-Control-Allow-Origin’ header is present on the requested resource

    相关错误:Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at
    http://some/url/

    错误肯定是使用 XMLHttpRequest 引起的。

    如何修复:确保请求的 URL 是正确的,它遵循同源策略。最好的方法是从代码中找到错误信息指出的 URL 。

    InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable

    相关错误:InvalidStateError, DOMException code 11

    代码调用的方法在当前状态无法调用。通常由XMLHttpRequest引起,在方法准备完毕之前调用它会引起错误。

    展开全文
  • ErrorBoard, 跟踪和修复浏览器触发的JavaScript错误 访客 ErrorBoard跟踪并修复访问者浏览器触发的JavaScript错误。屏幕截图 先决条件Node.js 和 NPM免费端口安装$ git clone git://github.com/Lapp
  • JavaScript错误及其解决方法 JavaScript可能是调试的噩梦:一开始它会产生一些错误,很难理解,而且给出的行号也不总是有用。 有一个清单可以帮助您了解它们的含义以及如何修复它们,这对您有用吗? 干得好! ...

    javascript错误

    JavaScript can be a nightmare to debug: Some errors it gives can be very difficult to understand at first, and the line numbers given aren’t always helpful either. Wouldn’t it be useful to have a list where you could look to find out what they mean and how to fix them? Here you go!

    JavaScript可能是调试的噩梦:一开始它会产生一些错误,很难理解,而且给出的行号也不总是有用。 有一个清单可以帮助您了解它们的含义以及如何修复它们,这对您有用吗? 干得好!

    Below is a list of the strange errors in JavaScript. Different browsers can give you different messages for the same error, so there are several different examples where applicable.

    以下列出了JavaScript中的奇怪错误。 不同的浏览器可以为您提供相同错误的不同消息,因此有几个不同的示例适用。

    如何读取错误? (How to read errors?)

    Before the list, let’s quickly look at the structure of an error message. Understanding the structure helps understand the errors, and you’ll have less trouble if you run into any errors not listed here.

    在列表之前,让我们快速查看错误消息的结构。 了解结构有助于理解错误,如果遇到此处未列出的任何错误,您的麻烦也将减少。

    A typical error from Chrome looks like this:

    Chrome的一个典型错误如下所示:

    Uncaught TypeError: undefined is not a function
    

    The structure of the error is as follows:

    错误的结构如下:

    1. Uncaught TypeError: This part of the message is usually not very useful. Uncaught means the error was not caught in a catch statement, and TypeError is the error’s name.

      未被捕获的TypeError :消息的这一部分通常不是很有用。 未捕获表示错误未在catch语句中catchTypeError是错误的名称。

    2. undefined is not a function: This is the message part. With error messages, you have to read them very literally. For example in this case it literally means that the code attempted to use undefined like it was a function.

      undefined不是函数 :这是消息部分。 对于错误消息,您必须按字面意义阅读它们。 例如,在这种情况下,它的字面意思是代码试图像函数一样使用undefined

    Other webkit-based browsers, like Safari, give errors in a similar format to Chrome. Errors from Firefox are similar, but do not always include the first part, and recent versions of Internet Explorer also give simpler errors than Chrome – but in this case, simpler does not always mean better.

    其他基于Webkit的浏览器(例如Safari)以类似于Chrome的格式给出错误。 Firefox的错误类似,但并不总是包含第一部分,而且Internet Explorer的最新版本也比Chrome提供的错误更简单-但是在这种情况下,更简单的错误并不总是意味着更好。

    Now onto the actual errors.

    现在转到实际错误。

    未捕获的TypeError:undefined不是函数 (Uncaught TypeError: undefined is not a function)

    Related errors: number is not a function, object is not a function, string is not a function, Unhandled Error: ‘foo’ is not a function, Function Expected

    相关错误:数字不是函数,对象不是函数,字符串不是函数,未处理的错误:'foo'不是函数,预期的函数

    Occurs when attempting to call a value like a function, where the value is not a function. For example:

    尝试调用诸如函数之类的值(该值不是函数)时发生。 例如:

    var foo = undefined;
    foo();
    
    

    This error typically occurs if you are trying to call a function in an object, but you typed the name wrong.

    如果尝试在对象中调用函数,但是键入的名称错误,通常会发生此错误。

    var x = document.getElementByID('foo');
    
    

    Since object properties that don’t exist are undefined by default, the above would result in this error.

    由于默认情况下undefined不存在的对象属性,因此上述情况会导致此错误。

    The other variations such as “number is not a function” occur when attempting to call a number like it was a function.

    尝试像调用数字一样调用数字时,会发生其他变化,例如“数字不是函数”。

    How to fix this error: Ensure the function name is correct. With this error, the line number will usually point at the correct location.

    如何解决此错误:确保函数名称正确。 遇到此错误,行号通常将指向正确的位置。

    未捕获的ReferenceError:分配中的左侧无效 (Uncaught ReferenceError: Invalid left-hand side in assignment)

    Related errors: Uncaught exception: ReferenceError: Cannot assign to ‘functionCall()’, Uncaught exception: ReferenceError: Cannot assign to ‘this’

    相关错误:未捕获的异常:ReferenceError:无法分配给“ functionCall()”,未捕获的异常:ReferenceError:无法分配给“ this”

    Caused by attempting to assign a value to something that cannot be assigned to.

    尝试将值分配给无法分配的内容。

    The most common example of this error is with if-clauses:

    此错误的最常见示例是if子句:

    if(doSomething() = 'somevalue')
    
    

    In this example, the programmer accidentally used a single equals instead of two. The message “left-hand side in assignment” is referring to the part on the left side of the equals sign, so like you can see in the above example, the left-hand side contains something you can’t assign to, leading to the error.

    在这个例子中,程序员不小心使用了一个单一的等于而不是两个。 消息“分配中的左侧”是指等号左侧的部分,因此,如您在上面的示例中所见,左侧包含无法分配的内容,导致错误。

    How to fix this error: Make sure you’re not attempting to assign values to function results or to the this keyword.

    如何解决此错误:确保您没有尝试为函数结果或this关键字分配值。

    未捕获的TypeError:将圆形结构转换为JSON (Uncaught TypeError: Converting circular structure to JSON)

    Related errors: Uncaught exception: TypeError: JSON.stringify: Not an acyclic Object, TypeError: cyclic object value, Circular reference in value argument not supported

    相关错误:未捕获的异常:TypeError:JSON.stringify:不是非循环对象,TypeError:循环对象值,value参数中的循环引用不受支持

    Always caused by a circular reference in an object, which is then passed into JSON.stringify.

    始终由对象中的循环引用引起,然后将其传递到JSON.stringify

    var a = { };
    var b = { a: a };
    a.b = b;
    JSON.stringify(a);
    
    

    Because both a and b in the above example have a reference to each other, the resulting object cannot be converted into JSON.

    由于上例中的ab相互引用,因此无法将结果对象转换为JSON。

    How to fix this error: Remove circular references like in the example from any objects you want to convert into JSON.

    如何解决此错误:从示例中将要转换为JSON的对象删除循环引用,如示例中所示。

    意外的标记 ; (Unexpected token ;)

    Related errors: Expected ), missing ) after argument list

    相关错误:参数列表后,预期),缺少)

    The JavaScript interpreter expected something, but it wasn’t there. Typically caused by mismatched parentheses or brackets.

    JavaScript解释器期望了一些东西,但是还没有。 通常由括号或括号不匹配引起。

    The token in this error can vary – it might say “Unexpected token ]” or “Expected {” etc.

    此错误中的令牌可能会有所不同–可能会显示“意外令牌]”或“预期{”等。

    How to fix this error: Sometimes the line number with this error doesn’t point to the correct place, making it difficult to fix.

    如何解决此错误:有时出现此错误的行号没有指向正确的位置,因此很难解决。

    • An error with [ ] { } ( ) is usually caused by a mismatching pair. Check that all your parentheses and brackets have a matching pair. In this case, line number will often point to something else than the problem character

      [] {}()错误通常是由于配对不正确引起的。 检查所有括号和方括号是否都具有匹配的对。 在这种情况下,行号通常会指向问题字符以外的其他地方
    • Unexpected / is related to regular expressions. The line number for this will usually be correct.

      意外的/与正则表达式有关。 该行号通常是正确的。
    • Unexpected ; is usually caused by having a ; inside an object or array literal, or within the argument list of a function call. The line number will usually be correct for this case as well

      出乎意料; 通常是由于有; 在对象或数组文字中,或在函数调用的参数列表中。 在这种情况下,行号通常也是正确的

    Uncaught SyntaxError:意外的令牌非法 (Uncaught SyntaxError: Unexpected token ILLEGAL)

    Related errors: Unterminated String Literal, Invalid Line Terminator

    相关错误:未终止的字符串文字,无效的行终止符

    A string literal is missing the closing quote.

    字符串文字缺少右引号。

    How to fix this error: Ensure all strings have the correct closing quote.

    如何解决此错误:确保所有字符串都具有正确的结束引号。

    未捕获的TypeError:无法读取null的属性'foo',未捕获的TypeError:无法读取未定义的属性'foo' (Uncaught TypeError: Cannot read property ‘foo’ of null, Uncaught TypeError: Cannot read property ‘foo’ of undefined)

    Related errors: TypeError: someVal is null, Unable to get property ‘foo’ of undefined or null reference

    相关错误: TypeError:someVal为空,无法获取未定义或空引用的属性“ foo”

    Attempting to read null or undefined as if it was an object. For example:

    尝试读取nullundefined ,就像它是一个对象一样。 例如:

    var someVal = null;
    console.log(someVal.foo);
    
    

    How to fix this error: Usually caused by typos. Check that the variables used near the line number pointed by the error are correctly named.

    如何解决此错误:通常是由错别字引起的。 检查错误指向的行号附近使用的变量是否正确命名。

    未捕获的TypeError:无法将属性'foo'设置为null,未捕获的TypeError:无法将属性'foo'设置为undefined (Uncaught TypeError: Cannot set property ‘foo’ of null, Uncaught TypeError: Cannot set property ‘foo’ of undefined)

    Related errors: TypeError: someVal is undefined, Unable to set property ‘foo’ of undefined or null reference

    相关错误: TypeError:someVal未定义,无法设置未定义或空引用的属性“ foo”

    Attempting to write null or undefined as if it was an object. For example:

    尝试将nullundefined当作对象写入。 例如:

    var someVal = null;
    someVal.foo = 1;
    
    

    How to fix this error: This too is usually caused by typos. Check the variable names near the line the error points to.

    如何解决此错误:这通常也是由错别字引起的。 检查错误指向的行附近的变量名称。

    未捕获的RangeError:超出最大调用堆栈大小 (Uncaught RangeError: Maximum call stack size exceeded)

    Related errors: Uncaught exception: RangeError: Maximum recursion depth exceeded, too much recursion, Stack overflow

    相关错误:未捕获的异常:RangeError:超过最大递归深度,递归过多,堆栈溢出

    Usually caused by a bug in program logic, causing infinite recursive function calls.

    通常由程序逻辑中的错误引起,从而导致无限递归函数调用。

    How to fix this error: Check recursive functions for bugs that could cause them to keep recursing forever.

    如何解决此错误:检查递归函数中是否有可能导致其永远保持递归的错误。

    未捕获的URIError:URI格式错误 (Uncaught URIError: URI malformed)

    Related errors: URIError: malformed URI sequence

    相关错误: URI 错误: URI序列格式错误

    Caused by an invalid decodeURIComponent call.

    由无效的encodeURIComponent调用引起。

    How to fix this error: Check that the decodeURIComponent call at the error’s line number gets correct input.

    如何解决此错误:检查错误行号处的decodeURIComponent调用是否获取正确的输入。

    XMLHttpRequest无法加载http:// some / url /。 所请求的资源上没有“ Access-Control-Allow-Origin”标头 (XMLHttpRequest cannot load http://some/url/. No ‘Access-Control-Allow-Origin’ header is present on the requested resource)

    Related errors: Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://some/url/

    相关错误:跨域请求被阻止:同源策略禁止读取位于http:// some / url /的远程资源

    This error is always caused by the usage of XMLHttpRequest.

    此错误始终是由XMLHttpRequest的使用引起的。

    How to fix this error: Ensure the request URL is correct and it respects the same-origin policy. A good way to find the offending code is to look at the URL in the error message and find it from your code.

    如何解决此错误:确保请求URL正确并且遵守同源策略 。 查找有问题的代码的一个好方法是查看错误消息中的URL,然后从您的代码中找到它。

    InvalidStateError:尝试使用一个不可用或不再可用的对象 (InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable)

    Related errors: InvalidStateError, DOMException code 11

    相关错误: InvalidStateError,DOMException代码11

    Means the code called a function that you should not call at the current state. Occurs usually with XMLHttpRequest, when attempting to call functions on it before it’s ready.

    表示称为函数的代码,您不应在当前状态下调用该函数。 尝试在准备就绪之前调用XMLHttpRequest ,通常会发生在XMLHttpRequest上。

    var xhr = new XMLHttpRequest();
    xhr.setRequestHeader('Some-Header', 'val');
    
    

    In this case, you would get the error because the setRequestHeader function can only be called after calling xhr.open.

    在这种情况下,将出现错误,因为只有在调用xhr.open之后才能setRequestHeader函数。

    How to fix this error: Look at the code on the line pointed by the error and make sure it runs at the correct time, or add any necessary calls before it (such as xhr.open)

    如何解决此错误:错误所指向的行上查看代码,并确保它在正确的时间运行,或者在它之前添加任何必要的调用(例如xhr.open )。

    结论 (Conclusion)

    JavaScript has some of the most unhelpful errors I’ve seen, with the exception of the notorious Expected T_PAAMAYIM_NEKUDOTAYIM in PHP. With more familiarity the errors start to make more sense. Modern browsers also help, as they no longer give the completely useless errors they used to.

    JavaScript有一些我所见过的最无用的错误,除了PHP中臭名昭著的Expected T_PAAMAYIM_NEKUDOTAYIM 。 随着更多的熟悉,错误开始变得更有意义。 现代浏览器也有所帮助,因为它们不再提供以前完全没有用的错误。

    What’s the most confusing error you’ve seen? Share the frustration in the comments!

    您看到的最令人困惑的错误是什么? 在评论中分享挫败感!

    Want to learn more about these errors and how to prevent them? Detect Problems in JavaScript Automatically with ESLint.

    想更多地了解这些错误以及如何防止它们? 使用ESLint自动检测JavaScript中的问题

    翻译自: https://davidwalsh.name/fix-javascript-errors

    javascript错误

    展开全文
  • javascript错误处理

    2017-09-18 14:30:00
    在执行JavaScript代码的时候,有些情况下会发生错误错误分两种,一种是程序写的逻辑不对,导致代码执行异常。例如: var s = null; var len = s.length; // TypeError:null变量没有length属性 对于...

    在执行JavaScript代码的时候,有些情况下会发生错误。

    错误分两种,一种是程序写的逻辑不对,导致代码执行异常。例如:

    var s = null;
    var len = s.length; // TypeError:null变量没有length属性

     

    对于这种错误,要修复程序。

    一种是执行过程中,程序可能遇到无法预测的异常情况而报错,例如,网络连接中断,读取不存在的文件,没有操作权限等。

    对于这种错误,我们需要处理它,并可能需要给用户反馈。

    错误处理是程序设计时必须要考虑的问题。对于C这样贴近系统底层的语言,错误是通过错误码返回的:

    int fd = open("/path/to/file", O_RDONLY);
    if (fd == -1) {
        printf("Error when open file!");
    } else {
        // TODO
    }

     

    通过错误码返回错误,就需要约定什么是正确的返回值,什么是错误的返回值。上面的open()函数约定返回-1表示错误。

    显然,这种用错误码表示错误在编写程序时十分不便。

    因此,高级语言通常都提供了更抽象的错误处理逻辑try ... catch ... finally,JavaScript也不例外。

     

    try ... catch ... finally

    使用try ... catch ... finally处理错误时,我们编写的代码如下:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8" />
    <title>jQuery</title>
    <script src="/static/js/jquery-3.2.1.min.js"></script>
    </head>
    <body>
    <script>
    'use strict';
    var r1, r2, s = null;
    try {
        r1 = s.length;
        r2 = 100;
    } catch (e) {
        alert('Errors:' + e);
    } finally {
        console.log('finally');
    }
    console.log('r1 === ' + r1);
    console.log('r2 === ' + r2);
    </script>
    </body>
    </html>

    运行后可以发现,弹出的Alert提示类似“出错了:TypeError: Cannot read property 'length' of null”。

    我们来分析一下使用try ... catch ... finally的执行流程。

    当代码块被try { ... }包裹的时候,就表示这部分代码执行过程中可能会发生错误,一旦发生错误,就不再继续执行后续代码,转而跳到catch块。catch (e) { ... }包裹的代码就是错误处理代码,变量e表示捕获到的错误。最后,无论有没有错误,finally一定会被执行。

    所以,有错误发生时,执行流程像这样:

    1. 先执行try { ... }的代码;
    2. 执行到出错的语句时,后续语句不再继续执行,转而执行catch (e) { ... }代码;
    3. 最后执行finally { ... }代码。

    而没有错误发生时,执行流程像这样:

    1. 先执行try { ... }的代码;
    2. 因为没有出错,catch (e) { ... }代码不会被执行;
    3. 最后执行finally { ... }代码。

    最后请注意,catchfinally可以不必都出现。也就是说,try语句一共有三种形式:

    完整的try ... catch ... finally:

    try {
        ...
    } catch (e) {
        ...
    } finally {
        ...
    }

    只有try ... catch,没有finally:

    try {
        ...
    } catch (e) {
        ...
    }

    只有try ... finally,没有catch:

    try {
        ...
    } finally {
        ...
    }

     

    错误类型

    JavaScript有一个标准的Error对象表示错误,还有从Error派生的TypeErrorReferenceError等错误对象。我们在处理错误时,可以通过catch(e)捕获的变量e访问错误对象:

    try {
        ...
    } catch (e) {
        if (e instanceof TypeError) {
            alert('Type error!');
        } else if (e instanceof Error) {
            alert(e.message);
        } else {
            alert('Error: ' + e);
        }
    }

     

    使用变量e是一个习惯用法,也可以以其他变量名命名,如catch(ex)

    抛出错误

    程序也可以主动抛出一个错误,让执行流程直接跳转到catch块。抛出错误使用throw语句。

    例如,下面的代码让用户输入一个数字,程序接收到的实际上是一个字符串,然后用parseInt()转换为整数。当用户输入不合法的时候,我们就抛出错误:

    'use strict';
    var r, n, s;
    try {
        s = prompt('请输入一个数字');
        n = parseInt(s);
        if (isNaN(n)) {
            throw new Error('输入错误');
        }
        // 计算平方:
        r = n * n;
        alert(n + ' * ' + n + ' = ' + r);
    } catch (e) {
        alert('出错了:' + e);
    }

    实际上,JavaScript允许抛出任意对象,包括数字、字符串。但是,最好还是抛出一个Error对象。

    最后,当我们用catch捕获错误时,一定要编写错误处理语句:

    var n = 0, s;
    try {
        n = s.length;
    } catch (e) {
        console.log(e);
    }
    console.log(n);

    哪怕仅仅把错误打印出来,也不要什么也不干:

     

    var n = 0, s;
    try {
        n = s.length;
    } catch (e) {
    }
    console.log(n);

    因为catch到错误却什么都不执行,就不知道程序执行过程中到底有没有发生错误。

    处理错误时,请不要简单粗暴地用alert()把错误显示给用户。教程的代码使用alert()是为了便于演示。

     

    转载于:https://www.cnblogs.com/ocean-boy/p/7542907.html

    展开全文
  • 在 跟随.NET 2.0和.NET 4一起发布的浏览器定义文件中有一个错误,也就是它们保存相当一部分浏览器版本的定义。但是浏览器的有些版本(比如IE10)不再在这个范围之内。因 此,ASP.NET把它们看做是未知的浏览器,默认...

    __doPostBack error in IE10

    在 跟随.NET 2.0和.NET 4一起发布的浏览器定义文件中有一个错误,也就是它们保存相当一部分浏览器版本的定义。但是浏览器的有些版本(比如IE10)不再在这个范围之内。因 此,ASP.NET把它们看做是未知的浏览器,默认降级处理,这样就会给用户带来不便,比如不支持JavaScript特性。

    如果你想亲自看看,那就创建一个全新的空白的网站(可以在Visual Studio 2010中试一下),添加一个需要JavaScript回调的控件(例如:<asp:LinkButton>),然后用IE9来运行站点(这是可行的)。再用IE10来运行(这就不行了)。查看一下页面源代码,比较一下发送到两个版本的浏览器的HTML和JavaScript。

    火狐5也遇到上述相似的问题,也就是无法检测在浏览器中使用JavaScript重定位滚动条。这与为Web Form 页面而设的MaintainScrollbackPositionOnPostBack属性不符。

    这些“无法检测”错误在ASP.NET 2和ASP.NET4中都影响了Web Form页面。如果你使用的是ASP.NET Web页面,或者是ASP.NET MVC,但没有用浏览器对象去检测JavaScript支持,那你就不再受影响的范围内。

    修复

    有两种修复这个错误的方法:一个就是整体修复,另一个就是单独修复每个站点。

    整体修复

    我们正准备发布一个Hotfix来修复这些问题,你可以通过KB文章来获取。这些有修复 KB在一周内就会公布了。它们可以再一部机器上永久解决所有页面浏览器检测问题。这些修复也会在以后版本的framework中运用,最终会成为一个Windows更新。

    · .NET 4 - http://support.microsoft.com/kb/2600088

    · .NET 2.0 - http://support.microsoft.com/kb/2600100

    修复所做的就是更新IE.浏览器和火狐浏览器的文件(路径:\Windows\Microsoft.NET\Framework\<version>\Config\Browsers), 加上最新和未来已定义的版本号。不会影响其他任何东西。

    总结

    · ASP.NET 可能无法辨识出一些浏览器的最新版本,还会经常把它们看做是低级的浏览器。(也就是: 不支持JavaScript。)

    · 修复是指更新浏览器定义文件。

    · 你可以安装整体修复或者单一修复某些项目。

    · 下一版本的.NET framework会包括所有的更新文件。

    原文出处 :http://www.cnblogs.com/xingvskong11/archive/2013/03/12/2955708.html

    展开全文
  • 在实际应用拖拽的时候发现自己犯了两个错误,都是当文档内容多余一个屏幕的时候才会出现。 错误一,绝对位置 刚开始非常不解为什么拖拽需要获得鼠标相对文档的绝对位置,我之前写的代码也都是仅仅使用clientX和...
  • javascript常见错误

    2015-05-20 20:30:18
    有个查找错误含义,及修复措施的列表,是不是很有用? 以下是奇怪的 JavaScript 错误列表。同样的错误,不同的浏览器会给出不同的消息,因此有一些不同的例子。 如何读懂错误? 首先,让我们快速看下错误...
  • 类似的错误会影响Firefox 5及更高版本,在该版本中未检测到使用JavaScript在浏览器中重新定位滚动条的支持。 这基本上破坏了Web窗体页面的MaintenanceScrollbackPositionOnPostBack属性。 These "misdetection" ...
  • JavaScript 调试错误

    2017-12-08 09:49:00
    声明 本文转载,原文链接:http://bubkoo.com/2015/01/25/Strange-JavaScript-Errors-and-How-to-Fix-Them/ 以下正文(时间紧急,直接粘贴复制,后续...如果有一个列表,列举这些错误的意思和如何修复它们,将对...
  • 浏览器版本号继续升级过程中。IE9诞生了,IE10 也即将问世,火狐5和6...在跟随.NET 2.0和.NET 4一起发布的浏览器定义文件中有一个错误,也就是它们保存相当一部分浏览器版本的定义。但是浏览器的有些版本(比如IE10...
  • http://blogs.msdn.com/b/scott_hanselman/archive/2011/10/28/asp-net-ie10-dopostback-javascript-ff5.aspx
  • 前言在平日的工作中前端 badjs 是一个比较常见的问题, badjs 除了我们自身业务 js 脚本里比较明显的报错外还有依赖其他资源的一些报错,对于自身业务 js 里出现的错误很容易进行定位并修复,但对于依赖资源的错误即...
  • issu-tracker:这是基于API的基于JavaScript的简单项目,并修复了该项目的一些错误
  • and Fix: ASP.NET fails to detect IE10 causing _doPostBack is undefined JavaScript error or maintain FF5 scrollbar position  浏览器版本号继续升级过程中。IE9诞生了,IE10 也即将问世,火狐5和6已经...
  • JavaScript-错误处理

    2018-04-06 23:36:46
    错误处理在执行JavaScript代码的时候,有些情况下会发生错误错误分两种,一种是程序写的逻辑不对,导致代码执行异常。例如:var s = null; var len = s.length; // TypeError:null变量没有length属性 对于这种...
  • 在分析JavaScript程序错误时,ESLint是最好的linting工具之一。 ESLint提供对大量潜在错误和样式违规的检查。 它的可插拔架构还使任何人都可以编写自己的规则和自定义配置。使用--fix标志自动修复的功能。 集成自动...
  •  <capability name="javascript" value="true" />   value="1.5" />   value="${majorversion}.${minorversion}" />   value="1.0" />     value="true" />   value="true" />   value="true" />  ...
  • 对于这种错误,要修复程序。一种是执行过程中,程序可能遇到无法预测的异常情况而报错,例如,网络连接中断,读取不存在的文件,没有操作权限等。对于这种错误,需要处理它,并可能需要给用户反馈。
  • 有个查找错误含义,及修复措施的列表,是不是很有用? 以下是奇怪的 JavaScript 错误列表。同样的错误,不同的浏览器会给出不同的消息,因此有一些不同的例子。   如何读懂错误? 首先,让我们快速看下错误...
  • <p>I am getting errors in my apache log on the plugin called CSS Javascript Toolbox. The error is this: <pre><code>PHP message: PHP Warning: count(): Parameter must be an array or an object that ...
  • 前者通常比后者更难诊断和修复。 语言 计算机能够自动地向我们指出许多错误,如果它足够了解我们正在尝试做什么。 但是这里 JavaScript 的宽松是一个障碍。 它的绑定和属性概念很模糊,在实际运行程序之前很少会...
  • 脚本不运行的原因有很多,但是人们在编写脚本的时候会出现一些常见的错误。事实上,如果我们检查一下这些常见错误,就很有...要怎样才能找到这些常见错误并将其修复呢?这就是我们这篇文章要讲的内容。错误搭配或错误

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 423
精华内容 169
关键字:

修复javascript错误

java 订阅