为了抛出异常,我通常使用内置的异常类,例如ArgumentNullException和NotSupportedException. 但是,有时我需要使用自定义异常,在这种情况下我会写:
ArgumentNullException
NotSupportedException
class SlippedOnABananaException : Exception { } class ChokedOnAnAppleException : Exception { }
等等。然后我在我的代码中抛出并捕获这些。但是今天我遇到了这ApplicationException门课-我应该改用它吗?这是为了什么?
ApplicationException
拥有许多具有不同名称的有效相同的异常类似乎效率低下(我通常不需要任何单独的功能)。但我不喜欢捕获泛型ApplicationException并不得不使用额外代码来确定错误是什么的想法。
我的代码应该在哪里ApplicationException适合?
根据msdn中的备注:
用户应用程序,而不是公共语言运行时,会引发派生自 ApplicationException 类的自定义异常。ApplicationException 类区分应用程序定义的异常与系统定义的异常。 如果您正在设计需要创建自己的异常的应用程序,建议您从 Exception 类派生自定义异常。最初认为自定义异常应该从 ApplicationException 类派生;然而,在实践中,这并没有增加显着的价值。有关详细信息,请参阅处理异常的最佳实践。
用户应用程序,而不是公共语言运行时,会引发派生自 ApplicationException 类的自定义异常。ApplicationException 类区分应用程序定义的异常与系统定义的异常。
如果您正在设计需要创建自己的异常的应用程序,建议您从 Exception 类派生自定义异常。最初认为自定义异常应该从 ApplicationException 类派生;然而,在实践中,这并没有增加显着的价值。有关详细信息,请参阅处理异常的最佳实践。
从Exception. 此外,只要有保证,我认为为您的案例创建新的例外没有问题。如果您遇到框架中已经存在异常的情况,请使用它,否则,请自行处理。
Exception