我需要创建某种类型的对象.对象的类只有一个构造函数(我写的一个).
我的程序接收创建具有参数ID的对象实例的请求.如果ID参数包含不是数字的char,我想停止构造函数.
我之前无法检查参数,因为我不是调用构造函数的人.
"停止"构造函数的唯一方法是抛出异常.当然要记住调用者应该"知道"这个异常,并能够处理构造函数失败的情况.
从构造函数中抛出异常并不会阻止正在创建的对象,它只是使其对变量的引用赋值失败并且引用不可用(因此有资格进行垃圾回收),除非你犯了传递this给外部的错误构造函数本身的方法.(无论如何你不应该这样做.)
如何解决这个问题取决于当给出非法字符时您希望发生什么,这又取决于我们正在讨论的对象以及使用它的库如何使用它。
最合理的做法是抛出一个IllegalArgumentException,这就是我建议你这样做的。
return null然而,即使我强烈建议不要这样做,也可能有意义(您不能直接在构造函数中执行此操作,但您可以创建一个工厂方法来执行此操作)。
| 归档时间: |
|
| 查看次数: |
8191 次 |
| 最近记录: |