Edw*_*uay 4 c# exception custom-exceptions
感谢关于这个问题的输入,我决定让我的Create()方法抛出异常,这样Jon Skeet说,你不必在任何地方处理它们,只能让它们冒泡,似乎是最好的方法适用于大型应用.
所以现在用这段代码创建我的类的实例:
try
{
SmartForms smartForms = SmartForms.Create("ball");
smartForms.Show();
}
catch (CannotInstantiateException ex)
{
Console.WriteLine("Item could not be instantiated: {0}", ex.Message);
}
Run Code Online (Sandbox Code Playgroud)
自定义异常:
using System;
namespace TestFactory234.Exceptions
{
class CannotInstantiateException : Exception
{
}
}
Run Code Online (Sandbox Code Playgroud)
我如何知道要使用哪个Exception类?
在上面的例子中,我创建了自己的Exception,因为我不知道从哪里获取"所有系统异常"列表,或者是否存在"无法实例化对象"或者是否具有其他含义使用它等等.选择一个异常类型对我来说似乎总是这样一个任意的过程,所以创建我自己似乎是最好的想法.
或者我错过了一些关于异常的事情?决定使用哪种Exception类型还涉及哪些其他含义?
如果您无法创建对象的原因是因为Create的参数无效,您应该抛出一个ArgumentException.但是,ArgumentException如果您真的希望能够将这种异常分别处理给其他人,则可以始终创建自己的类.(你确定你要?)