ArgumentException和Just Exception有什么区别
本文关键字:什么 区别 Exception Just ArgumentException | 更新日期: 2024-10-31 23:30:29
在我们教授的示例代码中,他有一个片段看起来像这样:
if (name == null || name == "")
throw new ArgumentException("name is null or empty");
另一个片段看起来像这样:
if (!File.Exists(name))
{
throw new Exception("File does not exist!");
}
我只是想知道有什么不同,为什么一个使用在另一个之上
Exception
是所有异常的基类。 ArgumentException
用于表示参数无效。它从Exception
.使用 catch
,您实际上可以根据异常的类型进行过滤,并以不同的方式处理每个异常。
MSDN很好地描述了它:
当必须引发异常时,通常可以在 .NET Framework 中使用现有的异常类型,而不是实现自定义异常。在以下两种情况下,应使用标准异常类型:
- 您正在引发由使用错误(即,由调用您的方法的开发人员在程序逻辑中出现的错误)引起的异常。通常,您会抛出异常,例如 ArgumentException、ArgumentNullException、InvalidOperationException 或 NotSupportedException。实例化异常对象时提供给异常对象的构造函数的字符串应描述错误,以便开发人员可以修复它。有关详细信息,请参阅 消息属性。
- 您正在处理一个错误,该错误可以通过现有的 .NET Framework 异常传达给调用方。应尽可能引发派生最多的异常。例如,如果方法要求参数是枚举类型的有效成员,则应引发 InvalidEnumArgumentException(派生最多的类)而不是 ArgumentException。
Exception
是一个基类。这只是最通用的例外。在许多情况下,可以使用更具体的类型来提供有关所发生错误类型的详细信息。在这种情况下,ArgumentException
是一种异常类型,指示参数存在错误。
TLDR:ArgumentException
是一种用于提供更详细信息的Exception
对象是万物的根源。
对象有许多子类型。 例外就是其中之一。
异常有许多子类型。 SystemException就是其中之一。
SystemException有许多子类型。 ArgumentException就是其中之一。
ArgumentException 有许多子类型。 ArgumentNullException 和 ArgumentOutOfRangeException 就是其中的两个。
如果你的教授真的想使用他们本可以写的最明确的例外
if (name==null) throw new ArgumentNullException("name");
if (name=="") throw new ArgumentOutOfRangeException("name", name, "name cannot be zero length");