我的自定义异常是否应该继承与它们类似的异常,或者只是从Exception继承?

Sru*_*uly 9 c# exception

我在我的应用程序中创建了一些自定义异常.

如果我有一个在测试参数状态后被抛出的异常,或者我有一个在测试int在适当范围内后抛出的异常,我的异常是否会继承ArgumentException和IndexOutOfRangeException,还是应该继承Exception?

Luc*_*ero 11

由于继承用于指定要捕获的异常,因此您应该在做出决定时尊重这一点.

可以想象一个带有附加信息的IOException,或ArgumentOutOfRangeException或ArgumentNullException以外的ArgumentException.


All*_*enG 7

假设你真的需要一个自定义异常,我会从异常中继承你最喜欢的东西,而不仅仅是Exception.

也就是说,我发现在大多数情况下,使用正确的措辞,Exception消息通常足以创建一个全新的异常.

例如,如何与... throw new IntOutOfProperRangeException();显着不同throw new ArgumentOutOfRangeException("The int value was too large?");

  • 有时需要知道(从外部)int何时超出适当的范围.你会怎么检查?我不认为一个好主意是询问抛出的Exception是否是ArgumentOutOfRangeException异常,并且消息是否等于"int值太大了?".而不是那样,我认为最好这样做:try {...} catch(IntOutOfProperRangeException ex){//处理它}.当然,这取决于您的应用程序以及您需要使用它做什么 (3认同)