zoukankan      html  css  js  c++  java
  • Effective C# Item44:为应用程序创建特定的异常类

        异常是一种报告错误的机制,错误被处理的位置可能与其出现的位置相距甚远,所有有关错误原因的信息都必须保存在异常对象中,在这个过程中,我们可能希望将低级的错误翻译成与应用程序相关的特定错误,同时又不失去任何与源错误相关的信息。

        我们需要理解何时、为什么要创建新的异常类,以及怎样构造有价值的异常类层次。当开发人员编写catch语句时,他们会根据异常对象在运行时的不同类型来实现不同的行为,每一种行为就需要对应一个不同的异常类。

        不同的运行时异常类型拥有不同的catch语句,作为类库的作者,我们必须创建或者使用不同的异常类,从而使得catch语句能够执行不同的行为,如果不这样做,那么用户能拥有的选择就会很少。我们当然可以在一场被抛出的时候,直接挂起并退出应用程序,但是这样做是不负责任的。

        并不是所有的错误条件都应该将异常抛出,可以参考以下原则:如果它们不被立即处理或者报告,就会导致长期问题,例如数据库中的数据完整性错误应该产生异常,如果这种错误被忽略,那么问题将会越滚越大。

        我们在创建异常类时,采用的原则:人们在抛出异常时总倾向于过度使用System.Exception,这位将来的调用代码提供不了什么有用的信息,相反,经过仔细思考后创建必要的异常类,可以让调用方理解发生错误的原因,并为其提供最好的处理方式。

        下面来看如何创建异常类,在创建时,我们不应该从System.Exception类派生,而应该从System.ApplicationException派生,ApplicationException提供了4个构造函数,我们也需要创建这四个构造函数,同时可以使用基类中的构造函数。

        应用程序总会抛出异常,如果我们不做任何具体的处理,在我们调用.NET内核框架中的方法发生异常时,应用程序将产生.NET定义的异常对象,为异常提供更详细的信息可以帮助我们一级用户诊断错误,并尽可能的修复它们,当且仅当可能有不同的修复行为时,我们才应该创建多种不同的异常类。

  • 相关阅读:
    学而201205期先导班信息系统项目管理师招生简章
    201205期蘑菇班信息系统项目管理师招生简章
    用常识驳倒方舟子之一 :韩寒的女儿与常识
    学而201211期蘑菇班信息系统项目管理师招生简章
    工作量与工作历时计算
    git设置中英文
    楼层跳转scrollintoview坑
    一则浏览器兼容性解决案例(搜狗)
    C语言未初始化变量输出的是随即数
    远程关机,在MM面前显摆一次的机会,别错过 To Phper
  • 原文地址:https://www.cnblogs.com/wing011203/p/1675313.html
Copyright © 2011-2022 走看看