1.定义
程序运行中意外发生的状况。
2.类型
2.1抛出异常
程序出现异常后会停止运行
关键词:throw
写法: throw new Error('提示词')
function chu(num1:number,num2:number){
if(num2==0){
//throw 作用抛出异常
throw new Error('除数不能为零')
}
let num:number=num1/num2
console.log(num);
}
2.2主动捕获异常
出现异常不会停止运行
关键词: try catch finally
写法:
try {
//有可能出现异常的代码
} catch (error) {
//对异常的处理
}finally{
//无论是否有异常,都会执行的代码
}
try{//尝试执行有可能有异常的代码块
chu(1,0)
} catch (error) {//对异常进行处理
//error 出现的错误
console.log(error);
}//出现异常不会停止运行
chu(1,1)
3.模拟在文本框输入一个考试成绩,并分级
let num3:string='34.5'
// try {
// let score:number=parseFloat(num3)
// } catch (error) {
// console.log(error);
// }
// let score:number=parseFloat(num3)
// console.log(score);
function getNum(num:string):number{
if(parseFloat(num)){
return parseFloat(num)
}else{
throw new Error('必须输入数字')
}
}
//主动捕获异常
try{
if (getNum(num3)>60){
console.log('及格');
}else{
console.log('不及格');
}
}catch(err){
console.log('不及格');
}
// console.log(getNum(num3));
运行结果:
4. 模拟输入一个年龄,输完年龄后,提示输入成功(不管是不是出现异常,都需要提示输入成功)
let num:string='12'
//转化年龄
function getNum(num:string):number{
if(parseInt(num)){
return parseInt(num)
}else{
throw new Error('年龄输入错误')
}
}
function ts(){
// console.log('模拟输入的值为:'+num);
// let age=getNum(num)
// console.log('年龄是:'+age);
// console.log('输入成功');
try {
console.log('模拟输入的值为:'+num);
let age=getNum(num)
console.log('年龄是:'+age);
} catch (error) {
}finally{
//异常的最终解决方案
//finally 无论是否出现异常都要执行
console.log('输入成功');
}
}
ts()
运行结果:
3.return和finally的执行顺序
先执行finally,然后再执行return,原因:finally无论是否异常都会执行,当try没有异常 又return 的时候,汇执行完finally之后再执行return
function aa(){
try{
//异常代码
return 123
}catch(e){
return 456
} finally{
console.log('fgfdg');
}
}
let a=aa()
console.log(a);