函数:延迟调用的用途

本文探讨了错误和异常在编程中的区别,错误通常代表意外情况,而异常是一种可控的意外,可作为备用逻辑。文章重点讲解了延迟调用的用途,如在超出作用域时执行清理操作,以及Go语言中defer与finally的对比,强调defer在函数结束时执行的特性,并指出其在清理资源和改变流程控制中的应用。
摘要由CSDN通过智能技术生成

error vs exception

在设计层面错误和异常代表了两种概念,实现上没有抽象概念,异常和错误实际上是抽象层面的事情。

假设错误代表了意外,那么异常可以理解一种可控的意外。

从 CPU 什么或者从汇编层面上来说,不存在错误和异常。因为哪怕就是一个浮点计算错误或许被零除 CPU 实际上操作系统对这个事情都是有预案的,它并没有导致计算机崩溃。

那也就是不管 CPU,还是操作系统对这个事都有一个预案,那么我们可不可以认为根本不存在错误和异常,在实现层面上没有这种东西。如果底层没有这种东西的话,那我们实际上就得放弃从底层来研究这些东西。

错误或者异常实际上可以看成第二种控制流。我们正常一个流控制是一条线,因为种种原因会发生另外一种条件。比如需要的文件找不着了、访问非法内存。在这里面隐隐约约会出现第二套控制流,实际上错误或者异常是备用逻辑、冗余方案,它本身也是正常的操作。

操作系统为了保护自己会阻止一些事情违反了它的保护的一些机制,违反约定,对操作系统来说,它会触发它另外一套机制,那显然是一种非常正常的逻辑,无非不受我们控制。

某些的情况下,我们是很难捕获到一些什么系统层面的异常,比如 runtime 层面 OS 层面的一些异常,这种异常最终是被权限级别更高的运行时或者操作系统捕获,同时我们捕获我们需要控制的东西。

所以从这一点上来说,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值