主动触发错误
throw try catch debugger断点与单步跟踪
function getUserInput(msg){
var input=prompt(msg);
var parsed=parseInt(input);
if(parsed!=parsed){//parsed为NaN
return input;
}else{
return parsed;
}
}
function multiple(a,b){
if((typeof a!="number")||(typeof b!="number")){
throw new Error("arguments should all be number!"); //抛出错误后会往外找到最近它的catch语句
}
return a*b;
}
var c;
var a=getUserInput("请输入一个数");
var b=getUserInput("请再输入一个数");
try {
c=multiple(a,b);
alert("它们的乘积是"+c);
}catch(e){
alert("请输入两个数字");
}
try {//如果内部的代码抛出错误,则代码直接跳入catch块运行,且把错误对象赋值给catch括号内的变量
var x=null;
console.log(x.foo);
}catch(e){
console.log(e);
}finally{
//做一些请理性的工作
//finally块是一定会执行的
}