这种做法不能算错。事实上.net framework中也有构造函数中抛出异常的写法,比如在list的构造函数中传入一个负数:
var numbers = new List<int>(-1); //throws an exception
但是个人认为仍然应当尽量避免构造函数抛异常(没有理由,纯粹个人的代码感觉)。如果有抛异常的可能,我觉得用工厂方法比较容易让人接受。
class UserInfoProvider { public static UserInfo Create() { //initialize } }
我也学习了。。!
很正常啊。
用正确异常,如3个ArgumentException,然后写exception注释,调用的人就知道会报什么一场。构造函数最好不要调用virtual的函数进行初始化,因为是可以重写,子类怎样实现完全无法知道。
这个也算正常吧。构造函数中,有参数的输入,这些是要检查的,不符合构造对象的要求,就要抛出异常来告知对象创建失败。
我认为抛异常跟是否在构造函数一点关系也没有.