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

TypeScript异常处理

1.异常的概念

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

例子:

//除法运算function chu(num1:number,num2:number){if(num2==0){//throw 抛出异常throw new Error('除数不能为零')}let num:number=num1/num2console.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.lryc.cn/news/441549.html

相关文章:

  • go的学习笔记
  • 卷积和转置卷积的输出尺寸计算
  • vue3+ts 使用amCharts展示地图,1.点击左侧国家,可以高亮并放大右侧地图对应的国家。 2.展示数据球。
  • 汽车无钥匙启动功能工作原理
  • C++标准的一些特性记录:C++11的auto和decltype
  • 【Elasticsearch系列四】ELK Stack
  • 【新手上路】衡石分析平台使用手册-认证方式
  • 数字电路与逻辑设计-触发器功能测试及其应用
  • 【网站架构部署与优化】web服务与http协议
  • 【字符函数】strcpy函数(字符串复制函数)+strcat函数(字符串追加)+strcmp函数(字符串比较)【笔记】
  • codetop字符串刷题,刷穿地心!!不再畏惧!!暴打面试官!!
  • 快速体验Linux发行版:DistroSea详解与操作指南
  • Java设计模式—面向对象设计原则(二) --------> 里氏代换原则 LSP (完整详解,附有代码+案列)
  • 使用ShardingSphere实现MySql的分库分表
  • 为什么 Feign 要用 HTTP 而不是 RPC?
  • OJ在线评测系统 前端开发设计优化通用菜单组件二 调试用户自动登录
  • mongodb 安装教程
  • 切换淘宝最新镜像源npm
  • SpringAI-基于java大模型的胡言乱语
  • python提问及解析
  • 从Apple Intelligence到IoT Intelligence,端侧生成式AI时代加速到来
  • 智能AC管理系统HTTPD-AC 1.0服务存在未授权访问漏洞
  • Sidewalk介绍
  • Java数据结构 (泛型第二节) 泛型擦除机制/泛型的限制/上界下界
  • 数据安全标准在非结构化数据中台的遵守
  • 探索Go语言中的Goroutine并发机制
  • 实现实时Web应用,使用AJAX轮询、WebSocket、还是SSE呢??
  • 3GPP协议入门——物理层基础(一)
  • 关于Java数据结构中集合的一个小知识
  • leetcode41. 缺失的第一个正数,原地哈希表