在我们教授的示例代码中,他有一个看起来像这样的片段:
mystring.Replace("xx", "x");
另一个看起来像这样的片段:
if (name == null || name == "")
throw new ArgumentException("name is null or empty");
我只是想知道不同之处是什么以及为什么一个在另一个之上使用
答案 0 :(得分:5)
Exception
是所有异常的基类。 ArgumentException
用于表示参数无效。它是Exception
的子类。使用catch
,您实际上可以根据异常的类型进行过滤,并以不同的方式处理每个异常。
当您必须抛出异常时,通常可以在.NET Framework中使用现有的异常类型,而不是实现自定义异常。您应该在这两个条件下使用标准异常类型:
- 您正在抛出一个由使用错误引起的异常(即,由调用您的方法的开发人员的程序逻辑中的错误)。通常,您将抛出异常,例如ArgumentException,ArgumentNullException,InvalidOperationException或NotSupportedException。在实例化异常对象时,您提供给异常对象的构造函数的字符串应描述错误,以便开发人员可以修复它。有关更多信息,请参阅Message属性。
- 您正在处理可以使用现有.NET Framework异常传递给调用方的错误。您应该抛出最多派生的异常。例如,如果方法要求参数是枚举类型的有效成员,则应抛出InvalidEnumArgumentException(派生类最多的类)而不是ArgumentException。
答案 1 :(得分:1)
Exception
是一个基类。这只是最普遍的例外。在许多情况下,可以使用更具体的类型来提供有关发生的错误类型的更多信息。在这种情况下,ArgumentException
是一种异常,表示参数存在错误。
TLDR:ArgumentException
是一种用于提供更详细信息的Exception
答案 2 :(得分:1)
对象是所有事物的根源。
有许多对象的子类型。例外就是其中之一。
Exception有许多子类型。 SystemException就是其中之一。
SystemException有许多子类型。 ArgumentException就是其中之一。
ArgumentException有很多子类型。 ArgumentNullException和ArgumentOutOfRangeException是其中两个。
如果你的教授真的想要使用最明确的例外,他们可以写
PlotBoxAspectRatio