当前位置: 首页 > article >正文

TypeScript异常处理

1.异常的概念

程序运行中意外发生的情况就成为异常

例子:

//除法运算

function chu(num1:number,num2:number){
    if(num2==0){
      //throw 抛出异常
       throw new Error('除数不能为零')
    }
    let num:number=num1/num2
    console.log(num)
}

//程序出现异常后会停止运行

// 捕获异常

try{ //尝试执行有可能有异常的代码块
    chu(1,0)
} catch(error){ //对异常进行处理
    console.log(error)
}
chu(1,1)

运行结果:

运行讲解:

当我们知道除数不能为0,为了避免程序中出现错误,我们就判断一下除数是否为0,如果为0就抛出异常,但是如果抛出异常没有处理,程序就会停止运行,为了避免异常导致程序停止运行,就需要捕获异常,try{} catch(error){}

try:尝试执行有可能有异常的代码

catch():对异常进行处理

这是我们模拟了一下错误,让try去执行代码,此时捕获到错误了,就交给了catch处理,

这里处理的结果是打印错误提示,而这个错误提示又是抛出异常的提示词,所以异常为除数不能为零,但是不影响底下代码正常运行。

2.finally的概念

finally是异常的最终解决方案,无论是否出现异常都要执行里面的代码

案例:模拟输入一个年龄,输完年龄之后,提示输入成功

(条件:不管是不是出现异常都需要提示成功)

let num:string='12'
// 转换年龄
function getNum(num:string):number{
    if(parseInt(num)){
        return parseInt(num)
    }else{
        throw new Error('年龄输入错误')
    }
}

function ts(){
   try {
    console.log('模拟输入的值为:'+num);
    let age=getNum(num)
    console.log('年龄是:'+age);
    
   } catch (error) {
    
    
   }finally{ 
        // 异常的最终解决方案
        //finally无论是否出现异常都要执行
        console.log('输入成功');
   }
    
}
ts()

运行结果:

无异常运行结果
发现异常运行结果

 运行讲解:

模拟输入年龄,年龄都是数字类型,年龄中出现字母则出现异常,我们就需要解决这一问题,就需要抛出异常,抛出异常就会影响下面代码正常运行,所以我们需要捕获一下异常,finally是异常的最终解决方案,无论是否出现异常都要执行,这样就可以完成我们上述的需求。

3.return和finally的执行顺序

function aa(){
    try{
        //异常代码
        return 123
    } catch(e){
        return 456
    }finally{
        console.log('567');
        
    }
}
let a=aa()
console.log(a);

思考上述代码是如何执行的?

运行结果:

运行分析:

先执行finally,然后再执行return ,原因:finally无论是否异常都会执行的,当try没有异常有return的时候,会先执行完filally之后在执行return 


http://www.kler.cn/news/311504.html

相关文章:

  • Spring IoC 配置类 总结
  • LabVIEW多语言支持优化
  • [数据集][目标检测]不同颜色的安全帽检测数据集VOC+YOLO格式7574张5类别
  • 版本控制之Git
  • U盘显示未被格式化:深入解析、恢复策略与预防之道
  • 前端mock了所有……
  • firewalld实现NAT端口转发
  • 美国站群服务器优化技巧解析
  • Opencv边缘检测(四)
  • 梯度计算中的一些算子
  • 魔方财务迁移指南
  • 【mysql面试题】mysql复习之常见面试题(二)
  • Conda和pip 清空缓存
  • Vue Router v3 深入指南:配置、概念、代码演示及应用场景
  • 新发布的OpenAI o1生成式AI模型在强化学习方面迈出了重要的一步
  • PHP发邮件教程:配置SMTP服务器发送邮件?
  • Mysql高级篇(中)—— SQL优化
  • 【ComfyUI】自定义节点ComfyUI_LayerStyle——模仿 Adob​​e Photoshop 的图层样式、图层混合、图文混合、添加不可见水印
  • QString返回字符串的字节数
  • 【5】AT32F437 OpenHarmony轻量系统移植教程(2)
  • SSH 服务器,防止链接断开,训练终止操作————screen
  • Elasticsearch 分片迁移与移除集群节点操作
  • POI生成Excel文件增加数据验证(下拉序列)
  • 获取多媒体相册的内容
  • WEB攻防-JavaWweb项目JWT身份攻击组件安全访问控制
  • Qt 菜单栏、工具栏、状态栏、标签、铆接部件(浮动窗口) 设置窗口核心部件(文本编辑控件)的基本使用
  • 代理模式-动态代理
  • Vue3:defineProps接收父组件传递的数据
  • java八股文之Redis
  • Git 分支规范