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('异常信息');