📜  C#自定义异常(1)

📅  最后修改于: 2023-12-03 15:30:19.528000             🧑  作者: Mango

C#自定义异常

在C#中,异常是指程序的错误或者意外情况。

C#自带了许多异常类型,比如 ArgumentExceptionNullReferenceExceptionIndexOutOfRangeException 等等。但是有时候,我们需要自定义异常来更好地处理程序的错误情况。这就需要用到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 类型的新对象,并将其抛出。在上面的代码中,我们传递了一个消息作为参数,这个消息将被输出到控制台,类似于预定义的异常类型一样。

捕获自定义异常

要捕获自定义异常,我们可以使用 trycatch 块。下面是一个示例:

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 块来捕获所有其他类型的异常,这将帮助我们发现任何未处理的异常。

总结

通过创建自定义异常,我们可以更好地处理程序中的错误情况,并提高代码的可维护性和可读性。使用自定义异常的最佳实践是只在需要时使用,并尝试重用现有的异常类型,除非没有合适的选项。