停止派生类的初始化

use*_*377 0 c# class base

我有一个基类,我想在初始化派生类之前用它来做一些检查.

class BaseClass
{
    public BaseClass(Object Param)
    {
        // Do checks
    }
}
Run Code Online (Sandbox Code Playgroud)

我(当然)也有派生类

class NewClass : BaseClass
{
    public NewClass(Object Param) : base(Param)
    {
        // Code here
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我希望有如下情况

如果基类中的检查失败,那么我希望派生类中的代码(这里是//代码)根本不会被执行.

这可能吗?如果是,怎么样?

Eri*_*ert 9

不要写一个" 烦恼的例外 ".派生类必须有一种方法来知道基类ctor是否要抛出.否则,您不会让派生类的作者轻松防止该错误.

正确的做法是(1)使派生类的调用者很容易知道是否会抛出异常,并且(2)如果他们弄错了,就会毫不留情地崩溃它们.让错误的数据传递给你很痛苦,并且容易避免这种痛苦,并且你最终永远不会抛出那个异常,因为你的派生类会避免痛苦.