如果我需要从应用程序中引发异常,我可以使用哪些内置 .NET 异常类?他们都是公平的游戏吗?我什么时候应该自己导出?
See 创建和抛出异常 http://msdn.microsoft.com/en-us/library/ms173163.aspx.
在抛出内置异常时,它说:
不要故意从您自己的源代码中抛出 System.Exception、System.SystemException、System.NullReferenceException 或 System.IndexOutOfRangeException。
and
不要抛出一般异常
如果抛出一般异常类型,例如库或框架中的 Exception 或 SystemException,它会强制使用者捕获所有异常,包括他们不知道如何处理的未知异常。
相反,要么抛出框架中已存在的更派生的类型,要么创建自己的从 Exception 派生的类型。”
This 博客条目 http://blogs.msdn.com/fxcop/archive/2007/01/22/faq-what-exception-should-i-throw-instead-of-the-reserved-exceptions-found-by-donotraisereservedexceptiontypes.aspx还有一些有用的指南。
此外,FxCop 代码分析将“不引发异常”列表定义为此处描述 http://msdn.microsoft.com/en-us/library/ms182338.aspx。它建议:
以下异常类型过于笼统,无法向用户提供足够的信息:
以下异常类型是保留的,只能由公共语言运行时抛出:
- 系统执行引擎异常
- 系统索引超出范围异常
- 系统.NullReferenceException
- 系统内存不足异常
因此,理论上,您可以引发任何其他框架异常类型,前提是您清楚地了解 Microsoft 所描述的异常的意图(请参阅 MSDN 文档)。
请注意,这些是“指南”,正如其他一些人所说,围绕 System.IndexOutOfRangeException 存在争议(即许多开发人员抛出此异常)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)