C# 异常处理
C# 异常处理
简介
在 C# 开发中,在程序执行的过程中难免会遇到一些错误情况,如输入错误、文件不存在等等,这些情况产生的错误就是异常。C# 中提供了异常处理机制,使程序能够在出现异常情况时,不会终止程序的执行,而是通过异常处理程序对异常进行处理,并进行相应的操作。
异常处理的基本框架
异常处理的基本框架是 try-catch-finally 语句块,其中 try 块是需要进行异常检测的代码段,catch 块用于捕获并处理异常,finally 块用于释放资源。
try
{
//需要进行异常检测的代码段
}
catch(Exception ex)
{
//捕获并处理异常
}
finally
{
//释放资源
}
处理异常
在 catch 块中可以使用以下语句处理异常:
throw
将当前异常对象重新抛出,并终止当前 catch 块后面的代码执行。
catch (Exception ex)
{
throw ex;
}
throw new Exception(“error message”)
手动抛出一个给定的异常并终止当前 catch 块后面的代码执行。
catch (Exception ex)
{
throw new Exception("error message");
}
处理异常并重新抛出
在 catch 块中可以处理异常并重新抛出异常,例如:
try
{
//需要进行异常检测的代码段
}
catch (Exception ex)
{
//捕获并处理异常
if (ex is InvalidOperationException)
{
//处理 InvalidOperationException 异常情况
}
else if (ex is ArgumentException)
{
//处理 ArgumentException 异常情况
}
//重新抛出异常
throw;
}
finally
{
//释放资源
}
多 catch 块
可以针对不同的异常类型设置多个 catch 块,例如:
try
{
//需要进行异常检测的代码段
}
catch (DivideByZeroException ex)
{
Console.WriteLine("DivideByZeroException Exception");
}
catch (Exception ex)
{
Console.WriteLine("Exception");
}
finally
{
//释放资源
}
在上述代码中,程序先进行对除0操作进行异常检测,如果出现 DivideByZeroException 异常,则执行第一个 catch 块中的代码;如果出现其它类型的异常,则执行第二个 catch 块中的代码。
自定义异常
在 C# 中,可以自定义异常类,以便在程序中使用。自定义类必须继承于 System.Exception,如下所示:
public class MyException : Exception
{
public MyException(string message) : base(message)
{
}
}
上述代码中,MyException 是自定义的异常类,继承于 Exception 类。我们在使用时,可以像使用系统自带的异常一样使用。
总结
C# 中的异常处理机制,能够保证程序在出现异常时不会中断程序的执行。程序员只需要在代码中进行异常处理即可,使程序具有更好的健壮性。多个 catch 块可以用于处理不同类型的异常,自定义异常类能够更加精确地抛出异常并进行处理。