可以从System.ArgumentException派生吗?

Kli*_*cou 39 c# exception

如果我有一个方法来检查其参数的有效性,是否可以抛出我自己的自定义异常System.ArgumentException?我在问,因为ArgumentException它本身是从中衍生而来的System.SystemException,我看到关于应用程序是否应该派生出来的指导方针存在冲突SystemException.(虽然是间接的,ArgumentException但仍然等于衍生出来SystemException.)

我看到许多指南说不是从中派生出来的ApplicationException,而是从Exception派生出来的.我很高兴.我不确定的是,是否也可以从SystemException派生.

如果我不应该从中派生SystemException,那么我应该从中派生出什么"invalid argument"异常类?

Bot*_*000 40

关于处理异常的最佳实践MSDN页面

如果传递了无效参数,则抛出ArgumentException或从ArgumentException派生的类.

所以我会说它没关系,甚至推荐.


dba*_*lia 7

从System.ArgumentException派生的一个好处是catch(System.ArgumentException)块将能够处理您的自定义异常类型System.ArgumentException.这可能是也可能不是你想要的.


Den*_*aub 5

如果你想得出你的"无效论证"例外而且除此之外没有意义,那么ArgumentException听起来像是一个合理的候选人:

调用方法并且至少有一个传递的参数不符合被调用方法的参数规范时,抛出ArgumentException.--MSDN