如何用C#创建用户自定义异常浅析
什么是用户自定义异常?
C#中,用户自定义异常是一种可以由程序员自己定义并抛出的异常类型。在程序中,如果发现了某个错误情况,可以通过自定义异常来更加精确地描述问题,并向上层抛出。这样,程序的处理逻辑和异常捕捉代码会变得更加简单明了。
如何创建用户自定义异常?
要创建一个用户自定义异常类型,首先需要继承自System.Exception类,或者它的子类。毕竟异常本身也是一种对象,这里的继承关系就是为了在系统框架中使用一些通用的属性和方法。
下面是一个创建用户自定义异常的样例代码:
using System;
public class MyCustomException : Exception
{
public MyCustomException() { }
public MyCustomException(string message) : base(message) { }
public MyCustomException(string message, Exception inner) : base(message, inner) { }
}
在这个代码中,我们创建了一个名为MyCustomException的用户自定义异常类型。它继承自System.Exception类,并且具有三个构造函数,分别对应无参数、有参数、有参数及内部异常的情况下异常的创建。在这个样例中,我们只传递了一些字符串信息,它将会作为异常对象的信息保存下来。
注意:在实际的开发过程中,构造函数的传入参数可以根据项目的需要自由修改。
如何在程序中使用自定义异常?
使用自定义异常的过程包含三个步骤:
-
检测错误情况,创建异常对象。
-
将异常对象通过throw关键字抛出。
-
在上层程序中通过try-catch语句捕获异常。
下面是一个使用自定义异常的样例代码:
using System;
public class MyClass
{
public void DoSomething(int x)
{
if (x < 0)
{
throw new MyCustomException($"参数 x 的值无效:{x}", new ArgumentOutOfRangeException(nameof(x)));
}
// 其他代码
}
}
public class Program
{
public static void Main()
{
var obj = new MyClass();
try
{
obj.DoSomething(-1);
}
catch (MyCustomException ex)
{
Console.WriteLine($"收到了自定义异常:{ex.Message}");
}
}
}
在这个代码中,我们创建了一个名为MyClass的类,并在其中定义了一个名为DoSomething的方法。在这个方法中,我们检测了参数x是否小于0,如果小于0,则抛出了一个用户自定义异常MyCustomException。
在Main方法中,我们创建了一个MyClass对象,并执行了它的DoSomething方法。由于DoSomething方法中出现了异常,所以我们通过try-catch语句来捕获异常。如果异常类型为MyCustomException,我们就直接输出异常信息。
示例一:自定义异常示例
下面是一个使用自定义异常的实际示例:
using System;
public class MyFileReader
{
public void Read(string path)
{
if (!System.IO.File.Exists(path))
{
throw new FileNotExistException($"文件不存在:{path}");
}
// 其他代码
}
}
public class FileNotExistException : Exception
{
public FileNotExistException(string message) : base(message) { }
}
在这个示例中,我们封装了一个名为MyFileReader的类,并在其中定义了一个名为Read的方法。在这个方法中,我们检测了指定的文件是否存在,如果不存在,则抛出了一个FileNotExistException异常。
在FileNotExistException类中,我们只是简单地重载了带有message字符串参数的构造函数。
示例二:自定义异常含有外部异常
下面是一个带外部异常的自定义异常实际示例:
using System;
public class InternetRequestException : Exception
{
public InternetRequestException(string message, Exception inner) : base(message, inner) { }
}
public class MyInternetRequest
{
public void Request(string url)
{
try
{
// 在此执行网络请求
}
catch (Exception ex)
{
throw new InternetRequestException($"网络请求发生异常:{ex.Message}", ex);
}
}
}
在这个示例中,我们封装了一个名为MyInternetRequest的类,并在其中定义了一个名为Request的方法。在这个方法中,我们执行了一个网络请求,并通过try-catch语句进行了异常捕获。如果捕获到了异常,我们将它包装成了一个自定义异常InternetRequestException。
在InternetRequestException类中,我们重载了带有message字符串参数和inner外部异常参数的构造函数。这样,在程序中就可以通过InternetRequestException异常的InnerException属性获得原始的异常信息。
总结
C#中,创建用户自定义异常非常简单,只需要继承自System.Exception类。在使用自定义异常的过程中,可以使用try-catch语句来捕获异常,并对异常进行处理。而在自定义异常类中,我们可以重载系统定义的构造函数,来自由地设置异常信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何用C#创建用户自定义异常浅析 - Python技术站