📅  最后修改于: 2023-12-03 15:30:19.528000             🧑  作者: Mango
在C#中,异常是指程序的错误或者意外情况。
C#自带了许多异常类型,比如 ArgumentException
、NullReferenceException
和 IndexOutOfRangeException
等等。但是有时候,我们需要自定义异常来更好地处理程序的错误情况。这就需要用到C#的自定义异常。
要创建自定义异常类,我们要继承自 System.Exception
类,因为它是所有异常的基类。下面来看一个示例:
public class MyCustomException : Exception
{
// 构造函数
public MyCustomException(string message) : base(message)
{
}
// 可选的构造函数
public MyCustomException(string message, Exception innerException) : base(message, innerException)
{
}
}
这个类继承自 System.Exception
,并且有两个构造函数。第一个构造函数接收一个字符串参数 message
,是自定义异常的消息内容;第二个构造函数还接收了一个 innerException
参数,用于指定引起此异常的原因。
当我们需要在程序中抛出一个自定义异常时,可以使用 throw
语句,后跟我们定义的异常类型,如下所示:
throw new MyCustomException("Something went wrong.");
这会创建一个我们定义的 MyCustomException
类型的新对象,并将其抛出。在上面的代码中,我们传递了一个消息作为参数,这个消息将被输出到控制台,类似于预定义的异常类型一样。
要捕获自定义异常,我们可以使用 try
和 catch
块。下面是一个示例:
try
{
// do something
throw new MyCustomException("Something went wrong.");
}
catch (MyCustomException ex)
{
Console.WriteLine("Custom Exception: " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("System Exception: " + ex.Message);
}
在上面的代码中,我们使用一个 try
块来执行一些操作,并在其中抛出了一个自定义异常。然后我们在 catch
块中捕获该异常,并输出它的消息。我们还定义了一个 catch
块来捕获所有其他类型的异常,这将帮助我们发现任何未处理的异常。
通过创建自定义异常,我们可以更好地处理程序中的错误情况,并提高代码的可维护性和可读性。使用自定义异常的最佳实践是只在需要时使用,并尝试重用现有的异常类型,除非没有合适的选项。