JavaScript 错误处理

发布于 2022-09-13 02:54:34 字数 3317 浏览 23 评论 0

转:石头

JavaScript 错误处理

1.使用window.onerror指定错误处理函数。
使用onerror事件处理函数的主要的问题是,他是BOM的一部分,所以,没有任何标准能控制它的行为。
因此,不同的浏览器使用这个事件处理函数处理错误的方式有明显的不同。
例如,在IE中发生onerror事件时,正常代码会继续执行,所有变量和数据都保留下来,并可通过onerror事件处理函数访问。
然而在Mozilla中,正常代码执行都会结束,同时所有错误发生之前的变量和数据都被销毁。
Safari和Konqueror不支持window对象上的onerror事件处理函数,但是都支持图像上的onerror事件处理函数

  1. <script type="text/javascript">
  2. window.onerror = function(message, url, line)
  3. {
  4. alert("Error.nMessage:"+ message +"nUrl:" + url + "nLine:" + line)
  5. return true;}
  6. </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函数中发生了错误

  1. <script type="text/javascript">
  2.      function addTwoNumber(a, b) {
  3.      if(arguments.length < 2){
  4.         throw new Error("Two numbers are required.");
  5.     }else{
  6.          return a + b;
  7.      }
  8. }
  9.   try {
  10.     result = addTwoNumber(90);
  11.      //alter(result);
  12.   } catch (oException) {
  13.      if (oException instanceof SyntaxError) {
  14.          alert("Syntax Error:" + oException.message);
  15.      }
  16.     else if (oException instanceof Error) {
  17.          alert(oException.message);
  18.      }
  19. }
  20. </script>

复制代码注:浏览器不会抛出Error类型的exception异常,所以如果捕获到Error类型的异常,可以确定这个异常是用户代码抛出的,不是浏览器抛出的。
Javascript的assert()
复制代码 代码如下:

  1. function assert(bCondition, sErrorMsg) {
  2.    if (!bCondition) {
  3.       alert(sErrorMsg);
  4.       throw new Error(sErrorMsg);
  5.    }
  6. }

复制代码3.JavaScript Debug工具

IE microsoft scirpt debugger
FF venkman

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文