C#/.NET 关于抛出异常

目录

45.方法约定被违背时抛异常

46.利用using与try/finally来清理资源

47.专门针对应用程序创建异常


45.方法约定被违背时抛异常

用异常来表示当前状况比错误码要好,错误码容易被忽视。

比如File.Exists() 文件存在返回true,文件不存在返回false 不会抛异常

而File.Open()如果文件不存在或者没有权限读取可以抛异常,因为Open只有在满足上述条件才有意义。侧面也说明了方法起名的规范重要性。

.NET也有很多做的好的示例,比如类型转换有int.parse和int.Tryparse两种,一般容易有异常的都有Try开头的版本。

46.利用using与try/finally来清理资源

如果用到了非托管资源,要通过IDisposable接口明确释放。.NET一般释放的责任是由使用方负责。也就是说自己使用了非托管资源,自己要记得释放。

Try/finally是保证程序出异常了,依然能释放非托管资源。

而using是try/finally的语法糖,帮我们减少代码量。

using只支持实现了IDisposable接口的,不是随随便便都能using的

大量的用到非托管资源其实非常的坑,没办法像C++那样及时的释放。因为释放接口由CLR负责调用

47.专门针对应用程序创建异常

创建自己的异常类是为了能用不同的catch捕获不同的状况。从而用不同的方式去处理。如果处理手段单一,其实没必要实现自己的异常类。

而需要清晰的异常信息来保证更快的修复程序效率,可以试着创建自己的异常类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值