标签:注册 应用 修改 注册表 tar 编译 特定 工作量 com
这是这一系列的最后一篇。
1.只有你觉得使用者会使用不同的形式去处理错误时,才应该创建不同的异常类。
2.自定义的异常类应该以“Exception”结尾,并且继承 System.Exception 或其他异常类。不过你也需要适当地包含该基类中的构造函数,内容直接交给基类实现即可。
/// <summary> /// 自定义的异常类 /// </summary> public class MyException : Exception { public MyException() : base() { } public MyException(string s) : base(s) { } public MyException(string s, Exception e) : base(s, e) { } protected MyException(SerializationInfo info, StreamingContext cxt) : base(info, cxt) { } }
3.在抛出你自定义的异常时,应该将原始的异常存放在 InnerException 属性中,这样就可以显示足够友好,并且信息丰富的异常:
public void Do() { try { //DoException(); } catch (DoException e) { var msg = $"该问题是博主故意引起的"; throw new MyException(msg, e); } }
4.只有在存在不同类型的恢复操作时,才应该抛出不同类型的异常,定义异常类时,还要提供基类中支持的所有构造函数。此外,不要忘记使用 InnerException 属性来保存低层次的异常信息。
1.Dave Abrahams 定义了 3 种安全异常来保证程序:基础保证、强保证,以及无抛出保证。
2.强异常保证:如果一个操作因为某个异常中断,程序将维持原状态不变,操作要么彻底完成,要么就不会修改程序的任何状态。强异常保证的好处:任何时候若是捕获了异常,所有将要尝试的正常操作都不继续进行,也就是不会继续进行修改。程序当前的状态如尚未开始进行该操作一样。
1..NET 运行环境与语言无关,我们创建的程序集必须与 CLS 保持兼容,这样才能保证其他的开发人员可以用另一种语言来调用你的组件。
《Effective C#》快速笔记(一)- C# 语言习惯
《Effective C#》快速笔记(二)- .NET 资源托管
《Effective C#》快速笔记(三)- 使用 C# 表达设计
《Effective C#》快速笔记(五) - C# 中的动态编程
[.NET] 《Effective C#》快速笔记 - C# 高效编程要点补充
标签:注册 应用 修改 注册表 tar 编译 特定 工作量 com
原文地址:http://www.cnblogs.com/liqingwen/p/6827546.html