有return的情况下try catch finally的执行顺序

简介: 背景:          昨天一个朋友出去面试,遇到这么一道题:“C#  catch里有return,finally里还执行吗?” 个人实践小结:         1、不管有木有出现异常,finally块中代码都会执行。         2、当try和catch中有return时,finally仍然会执行。     具体案例如下(此处以没有返回值的函数进行验证):      

背景:

         昨天一个朋友出去面试,遇到这么一道题:“C#  catch里有return,finally里还执行吗?”

个人实践小结:

        1、不管有木有出现异常,finally块中代码都会执行
        2、当try和catch中有return时,finally仍然会执行。    

具体案例如下(此处以没有返回值的函数进行验证):

        

       3、如果是值传递,finally中改变的值对try或catch块中return返回的值无影响如果是引用类型参数(地址传递或对象),finally中的值改变对return会产生影响

具体案例:

      引用案例--数组类型:


        值案例--int类型:


        思考:string类型属于引用类型,那么它的返回值会受到finflly的影响吗?还是来看案例吧-----其实string与int类型的表现一样,不会受到finally的影响:


        思考:那么在finally中加上return,会产生什么影响呢?有图有真相:


        可见,finally中是不允许出现return的,否则连编译都过不去。

        


       

目录
相关文章
|
监控 安全 网络安全
IPSEC 与防火墙:功能与优势比较
【8月更文挑战第24天】
337 0
|
监控 Python
什么是WSGI,uwsgi和gunicorn在Python Web部署中起到什么作用?
**WSGI**是Python Web应用与服务器间的标准接口。**uwsgi**是实现WSGI的服务器,用于在不同服务器上高效部署应用。**gunicorn**是高性能的WSGI服务器,提供易用接口和进程管理功能。两者协同工作,作为桥梁连接应用与服务器,支持高并发和生产环境部署,提升性能和可靠性。配置因应用和环境而异,需按需调整。
525 2
|
安全 Linux Shell
Linux系统之间实现免密码登录(SSH无密码登录
【8月更文挑战第21天】要在Linux系统间实现SSH免密码登录,需先在源机器生成SSH密钥对,然后将公钥复制到目标机器的`.ssh/authorized_keys`文件中。可通过`ssh-keygen`命令生成密钥,并使用`ssh-copy-id`命令传输公钥。最后测试SSH连接,确保能无密码登录。若目标机器缺少相关目录或文件,需手动创建并设置适当权限。完成这些步骤后,即可实现安全便捷的免密码登录。
612 0
|
安全 网络协议 Linux
|
安全 Linux 网络安全
NAT模式下主机连接虚拟机
NAT模式下主机连接虚拟机,VMware虚拟机系统以CentOS7为例。
698 0
|
存储 Linux KVM
|
Ubuntu 安全 网络协议
|
监控 前端开发 网络协议
HTTP - 长连接 & 短连接 & 长轮询 & 短轮询 & 心跳机制
HTTP - 长连接 & 短连接 & 长轮询 & 短轮询 & 心跳机制
3198 0
HTTP - 长连接 & 短连接 & 长轮询 & 短轮询 & 心跳机制
apt-get update时卡在 [0%]waiting for headers
apt-get update时卡在 [0%]waiting for headers
|
SQL 数据处理
SQL基础14—— 数据处理(DML、RETURNING、MERGE INTO)
一、常用的DML语句及事物处理     向表中插入数据(INSERT)     更新表中数据(UPDATE)     从表中删除数据(DELETE)     将表中数据和并(MERGE)     控制事务(TRANSACTION)   二、DML 可以在下列条件下执行:     向表中插入数据     修改现存数据     删除现存数据     事务是由完成若干项工作的DML语句组成的。
1169 0