error
error对象是包含错误信息的对象,是javascript的原生对象。当代码解析或运行时发生错误,javascript引擎就会自动产生并抛出一个error对象的,然后整个程序就中断在发生错误的地方。
error对象包括两个属性:message和name。message属性保存着错误信息,而name属性保存错误类型。
error类型
执行代码期间可能会发生的错误有多种类型。每种错误都有对应的错误类型,而当错误发生时,就会抛出相应类型的错误对象。6种错误类型:
- EvalError(eval错误)
- RangeError(范围错误)
- ReferenceError(引用错误)
- SyntaxError(语法错误)
- TypeError(类型错误)
- URIError(URI错误)
如何自定义错误对象
在大部分的代码执行过程中,都是出现错误的时候,由浏览器(javascript引擎)抛出异常,然后程序或者停止执行
然而有时候我们在检测到一些不合理的情况发生的时候也可以主动抛出错误。
使用 throw 关键字抛出来主动抛出异常。将提供的一个对象作为错误抛出。任何类型的对象都可以,但是error;对象是最常用的。
throw new Error();
function round(num){
if(!isNaN(num)){
num*=100;
return num;
}else{
// 抛出自定义错误
throw new Error("参数必须是数字");
}
}
var num ="1a";
dome(num)
错误处理语法结构
try{
//可能抛出错误对象的语句
}
catch(用于接收错误对象的变量名){
//处理语句
}finally{
//不论错误发生与否都要执行的扫尾语句
}
try-catch
把有可能出的问题的代码放在 try 语句中。try语句中可以理论上可以写任何的代码,只要有一行代码出现问题,整个程序的执行流程就会立即调到catch语句中执行。
当 try-catch 语句中发生错误时,浏览器会认为错误已经被处理了,浏览器就不再报告错误了。就会继续执行下面的代码。这也是最简单的一种情况。
使用要点
- 使用try包裹的代码,即使不出错,效率也比不用try包裹的代码低;因为执行try…catch语句比较是比较耗资源的事情。
- 无法提前预知错误类型的错误,必须用try catch捕获;
try-catch的使用
function dome(num, d){
if(!isNaN(num)){
num*=100;
return num;
}else{
// 抛出自定义错误
throw new Error("参数必须是数字");
}
}
var num ="1a“;
try{
dome(num),
}catch(erroe){
console.log("错误抓捕成功");
console.log(erroe);
//console.log(erroe.name);//Error
//console.log(erroe.message);//参数必须是数字
//处理语句
var newnum = dome(1);
}finally{
console.log(newnum)
}