C#异常处理总结及简单实例
本文介绍C#中异常处理的相关知识,包括什么是异常、异常的分类、异常的捕获和处理、如何自定义异常等内容,并通过示例代码进行演示说明。
什么是异常
在C#中,异常是指在程序运行时某些意料之外的问题导致程序无法继续执行的情况。比如:代码中试图打开不存在的文件,或是试图进行无效的计算等。在这些情况下,程序会抛出一个异常,来提示程序员有错误出现。
异常分类
在C#中,异常可以分为两类:系统异常和自定义异常。
系统异常
系统异常是由.NET框架代码中的错误情况引起的异常,比如:
- NullReferenceException(空指针异常):当试图引用一个空对象的成员时,会引发该异常。
- IndexOutOfRangeException(索引超出范围异常):试图使用一个不存在于数组中的索引访问数组时,会引发该异常。
自定义异常
自定义异常是程序员根据自己的需要定义的异常,它可以帮助程序员更好地管理程序中的异常情况。
定义自定义异常的语法如下:
class MyException : Exception
{
public MyException(string message) : base(message)
{}
}
可以通过继承Exception类来定义自己的异常类,也可以通过构造函数和属性来扩展Exception类的功能。
异常的捕获和处理
C#中可以使用try-catch语句来捕获和处理异常。try语句块包含可能引发异常的代码,catch语句块处理异常。一个catch块可以捕获一个或多个异常,语法如下:
try
{
// 可能引发异常的代码
}
catch (ExceptionType1 e)
{
// 处理 ExceptionType1 类型的异常
}
catch (ExceptionType2 e)
{
// 处理 ExceptionType2 类型的异常
}
在上面的代码中,如果try块的代码引发了ExceptionType1类型的异常,那么第一个catch块会被执行,如果引发了ExceptionType2类型的异常,那么第二个catch块会被执行。
下面是一个通过try-catch语句来处理除零异常的示例代码:
using System;
class Program
{
public static void Main()
{
int dividend = 20;
int divisor = 0;
int result = 0;
try
{
result = dividend / divisor;
}
catch (DivideByZeroException ex)
{
Console.WriteLine("不能除以0。错误信息:{0}", ex.Message);
}
Console.WriteLine("结果是:{0}", result);
}
}
在上面的代码中,试图将20除以0,会引发DivideByZeroException异常,程序会捕获该异常并输出错误信息“不能除以0。”
自定义异常示例
下面是一个自定义异常的示例代码,该异常类用于检查温度是否在正常范围内:
using System;
class TemperatureOutOfRange : Exception
{
public TemperatureOutOfRange(string message) : base(message)
{}
}
class Program
{
static void Main(string[] args)
{
try
{
CheckTemperature(150);
}
catch (TemperatureOutOfRange ex)
{
Console.WriteLine(ex.Message);
}
}
static void CheckTemperature(int temperature)
{
if (temperature > 100 || temperature < 0)
{
throw new TemperatureOutOfRange("温度超出范围");
}
else
{
Console.WriteLine("温度正常");
}
}
}
在上面的代码中,当温度超出了0到100的范围时,程序抛出TemperatureOutOfRange异常,示例代码捕获异常并输出错误信息“温度超出范围”。
总结
本文介绍了C#异常处理的相关知识,包括什么是异常、异常的分类、异常的捕获和处理、如何自定义异常等内容。在实际开发中,合理处理异常可以提高程序的稳定性和可靠性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#异常处理总结及简单实例 - Python技术站