📅  最后修改于: 2023-12-03 15:29:07.733000             🧑  作者: Mango
在编写C#代码时,异常是不可避免的。.NET Core提供了许多不同类型的异常,每种类型都代表着不同的情况。本文将会介绍.NET Core中的异常类型及其含义。
System.Exception
是 .NET Core 中所有异常的基类。该异常类型表示了所有不同类型的异常都有的共性,比如 Message
属性、StackTrace
属性、InnerException
属性等。
通常,在捕捉异常时,建议使用更具体的异常类型进行捕捉。但是,在某些情况下,您可能需要使用 System.Exception
异常类型来捕捉所有可能引发的异常。
System.ArgumentException
表示一个参数无效。该异常通常发生在以下情况:
在捕捉该异常时,通常需要查看 ParamName
属性来获取无效参数的名称。
以下是抛出 System.ArgumentException
异常的示例程序:
public void DoSomething(string value)
{
if(string.IsNullOrEmpty(value))
{
throw new ArgumentException("The value cannot be null or empty.", nameof(value));
}
}
System.NullReferenceException
表示尝试访问 null 对象的成员时所引发的异常。该异常通常发生在以下情况:
以下是抛出 System.NullReferenceException
异常的示例程序:
public void DoSomething(object obj)
{
var value = obj.ToString(); // 如果 obj 为 null,此处会抛出 NullReferenceException 异常。
}
System.ArgumentNullException
表示一个参数为 null。该异常通常发生在以下情况:
和 System.ArgumentException
异常类似,捕捉该异常时,通常需要查看 ParamName
属性来获取 null 参数的名称。
以下是抛出 System.ArgumentNullException
异常的示例程序:
public void DoSomething(string value)
{
if(value == null)
{
throw new ArgumentNullException(nameof(value));
}
}
System.InvalidOperationException
表示对象处于无效状态,不支持当前操作。该异常可能发生在以下情况:
以下是抛出 System.InvalidOperationException
异常的示例程序:
public class Car
{
public void StartEngine()
{
if(IsOn)
{
throw new InvalidOperationException("The engine is already started.");
}
IsOn = true;
}
public void StopEngine()
{
if(!IsOn)
{
throw new InvalidOperationException("The engine is already stopped.");
}
IsOn = false;
}
private bool IsOn = false;
}
System.FormatException
表示字符串格式不正确。该异常通常发生在以下情况:
以下是抛出 System.FormatException
异常的示例程序:
public void DoSomething(string value)
{
if(!int.TryParse(value, out var intValue))
{
throw new FormatException("The value is not a valid integer.");
}
}
System.IO.IOException
表示输入/输出(I/O)操作过程中发生的异常。该异常通常发生在以下情况:
以下是抛出 System.IO.IOException
异常的示例程序:
public void DoSomething()
{
try
{
// 在文件不存在时,将会抛出 IOException 异常。
var lines = File.ReadAllLines("file.txt");
}
catch(IOException ex)
{
Console.WriteLine("An I/O error occurred: " + ex.Message);
}
}
System.NotSupportedException
表示当前系统或语言环境不支持某些操作。该异常通常发生在以下情况:
以下是抛出 System.NotSupportedException
异常的示例程序:
public void DoSomething()
{
if(Environment.OSVersion.Platform != PlatformID.Unix)
{
throw new NotSupportedException("This program can only run on Unix/Linux systems.");
}
}
.NET Core中提供了多种异常类型,您可以根据实际需求进行选择。在捕捉异常时,建议使用更具体的异常类型,以便更好地处理异常情况。