JavaScript 错误处理
转:石头
JavaScript 错误处理
1.使用window.onerror指定错误处理函数。
使用onerror事件处理函数的主要的问题是,他是BOM的一部分,所以,没有任何标准能控制它的行为。
因此,不同的浏览器使用这个事件处理函数处理错误的方式有明显的不同。
例如,在IE中发生onerror事件时,正常代码会继续执行,所有变量和数据都保留下来,并可通过onerror事件处理函数访问。
然而在Mozilla中,正常代码执行都会结束,同时所有错误发生之前的变量和数据都被销毁。
Safari和Konqueror不支持window对象上的onerror事件处理函数,但是都支持图像上的onerror事件处理函数
- <script type="text/javascript">
- window.onerror = function(message, url, line)
- {
- alert("Error.nMessage:"+ message +"nUrl:" + url + "nLine:" + line)
- return true;}
- </script>
复制代码Error.message是IE和FireFox都支持的属性。
IE支持description 和 number属性。
FF支持fileName lineNumber 和 stack 属性
2.使用Javascript中的try catch throw处理异常。
1、EvalError: An error occurs in the eval() function.错误发生在eval()函数中
2、RangeError: A number value is greater then or less then the number that can be represented in Javascript(Number.MAX_VALUE and Number.MIN_VAKUE).数字的值超出JavaScript可表示的范围
3、ReferenceError: An illegal reference is used.使用了非法的引用
4、SyntaxError: A syntax error occus inside of an eval() function call. All other syntax error are reorted by the browser and cannot be handled with a try...catch statement.
在Eval()函数调用中发生了语法错误。其他的语法错误由浏览器报告,无法通过try...catch处理
5、TypeError. A variables type is unexpected. 6.URIError. An error ocuurs in the encodeURI() or the decodeURI() function.
变量的类型不是预期所需要的
6、URIError. 在encodeURI()或者dencodeURI函数中发生了错误
- <script type="text/javascript">
- function addTwoNumber(a, b) {
- if(arguments.length < 2){
- throw new Error("Two numbers are required.");
- }else{
- return a + b;
- }
- }
- try {
- result = addTwoNumber(90);
- //alter(result);
- } catch (oException) {
- if (oException instanceof SyntaxError) {
- alert("Syntax Error:" + oException.message);
- }
- else if (oException instanceof Error) {
- alert(oException.message);
- }
- }
- </script>
复制代码注:浏览器不会抛出Error类型的exception异常,所以如果捕获到Error类型的异常,可以确定这个异常是用户代码抛出的,不是浏览器抛出的。
Javascript的assert()
复制代码 代码如下:
- function assert(bCondition, sErrorMsg) {
- if (!bCondition) {
- alert(sErrorMsg);
- throw new Error(sErrorMsg);
- }
- }
复制代码3.JavaScript Debug工具
IE microsoft scirpt debugger
FF venkman
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论