32. JavaScript 调试

1. 异常类型

1.语法异常:程序员输入一些编译器无法识别的代码后发生的

2.运行时的异常:通常是运行时碰到一个错误时发生的,与"语法异常"的区别在于,
它不一定是Js语言的错误引发的。

3.逻辑异常:往往发生在程序设计时,程序没有按照预先设计的方式运行。

2. 触发 onerror 事件处理异常

<script>
        window.onerror = function(){
          alert('您调用的函数不存在!');
            return true;
        };
</script>
如果在onerror事件处理函数中没有使用"return true"语句,在弹出错误 提示对话框之后,
浏览器的错误报告也会显示出来。为了隐藏此错误报告,函数需要返回true。
除了window对象可以触发onerror事件之外,图像对象也可以触发。

使用onerror事件处理异常除了可以捕获异常之外,还可以提供如下3种信息来确定发生异常的详细信息:
1.异常信息:获取异常信息
2.URL:获取发生异常的文件的绝对路径
3.行号:给定发生异常文件的行号

<script>
        window.onerror = function(ms,Url,Line){
          alert('您调用的函数不存在!' + ms + Url + Line);
            return true;
        };
</script>
<script>
        window.onerror = function(ms,Url,Line){
          alert('您调用的函数不存在!\n' + ms + '\n' + Url + '\n' + Line);
            return true;
        };
        onHava();
    </script>

这里写图片描述


3.使用 try … catch … finally 语句处理异常

<script>
        try{
            somestatment;
        }
        catch(exception e){
            somestatment;
        }finally{
            somestatment;
        }
</script>
try: 捕获异常关键字
catch:捕获异常关键字
finally:最近一定会被处理的区块的关键字

Js 与其他语言不同,try...catch...finally 语句只能有一个catch语句。
这是由于Js语言中无法指定出现的异常的类型。
嵌套try ... catch 语句
try{
            somestatment;
        }
catch(exception e){
            try{
                somestatment;
            }catch{
                somestatment;
            }
        }finally{
            somestatment;
}

4. Error 对象

  try...catch...finally语句中catch通常捕获到的对象为Error对象,Error类是所有用于抛出异常
  的类的基类,类似于Java语言中的用于抛出异常的基类Exception,Js中用于抛出异常的类如下:
  EvalError:错误发生在eval()函数中;
  RangeError:数字的值超出Js可表示范围;
  ReferenceError:使用了非法的引用;
  TypeError:变量的类型错误;
  URIError:在encodeURI()函数或者decodeURI()函数中发生了错误。

Error对象有如下两个特性:
name:表示异常类型的字符串;
message:实际异常信息;

使用throw语句抛出异常

throw new Error('异常信息');
// 抛出 Error对象子类的对象
throw new TypeError('异常信息');
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值