目录
<h1 style="text-align: center;">《Effective C#》快速笔记 - C# 高效编程要点补充 ? 目录
这是该系列的最后一篇。也许有些理论有可能会过时,我想它仍有存在的必要,人的知识水平也是一个不断成长的过程,学会站在前人的肩膀上,尝试不断的借鉴与总结。 四十五、尽量减少装箱拆箱
这里是一篇较为详细的关于装拆箱的博文:。 四十六、为应用程序创建专门的异常类1.只有当用户会以不同的形式去处理错误时,才应该创建不同的异常类。 2.自定义的异常类应该以“Exception”结尾,并且继承 System.Exception 或其他异常类。不过你也需要适当地包含该基类中的构造函数,内容直接交给基类实现即可。
MyException() :
}
</span><span style="color: #0000ff;">public</span> MyException(<span style="color: #0000ff;">string</span> s) : <span style="color: #0000ff;">base</span><span style="color: #000000;">(s)
{
}
</span><span style="color: #0000ff;">public</span> MyException(<span style="color: #0000ff;">string</span> s,Exception e) : <span style="color: #0000ff;">base</span><span style="color: #000000;">(s,e)
{
}
</span><span style="color: #0000ff;">protected</span> MyException(SerializationInfo info,StreamingContext cxt) : <span style="color: #0000ff;">base</span><span style="color: #000000;">(info,cxt)
{
}
}</span></pre>
3.在抛出自定义的异常时,应该将原始的异常存放在 InnerException 属性中,这样就可以显示足够友好,并且信息丰富的异常:
msg = $
4.只有在存在不同类型的恢复操作时,才应该抛出不同类型的异常,定义异常类时,还要提供基类中支持的所有构造函数。此外,不要忘记使用 InnerException 属性来保存低层次的异常信息。 四十七、使用强异常安全保证1.Dave Abrahams 定义了 3 种安全异常来保证程序:基础保证、强保证,以及无抛出保证。 2.强异常保证:从异常中恢复和简化异常处理之间提供了一个平衡点,如果一个操作因为某个异常中断,程序将维持原状态不变,操作要么彻底完成,要么就不会修改程序的任何状态。强异常保证的好处:任何时候若是捕获了异常,所有将要尝试的正常操作都不继续进行。程序当前的状态如尚未开始进行该操作一样。 3.对将要修改的数据做防御性的复制,对这些数据的防御性复制进行修改,这中间的操作可能会引发异常,在出现异常时可将临时副本和原对象进行交换。 4.终结器、Dispose() 方法和委托对象所绑定的目标方法在任何情况下都应当确保他们不会抛出异常。 四十八、尽量使用安全的代码
四十九、实现与 CLS 兼容的程序集1..NET 运行环境与语言无关,我们创建的程序集必须与 CLS 保持兼容,这样才能保证其他的开发人员可以用另一种语言来调用你的组件。 五十、实现小尺寸、高内聚的程序集
本系列
【博主】反骨仔 【原文】? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |