错误和异常处理(Visual C# 速成版)
更新:2007 年 11 月
如果 C# 程序运行期间发生错误,异常就会发生。异常会中止当前的程序流,如果不采取措施,程序将停止运行。异常可能会由程序中的 bug(例如数字被零除)或某些意外输入(如用户选择了不存在的文件)而造成。作为程序员,您需要使程序能够处理这些问题,避免程序崩溃至暂停。
C# 提供了几个关键字(try、catch 和 finally),程序可以用这些关键字检测异常、处理异常并继续运行。这些关键字是让应用程序更可靠的非常有用的工具。
Try 和 Catch
try 和 catch 关键字一起使用。使用 try 将您认为可能会生成异常的代码块括起来,使用 catch 将发生异常时要执行的代码括起来。在此示例中,计算会创建被零除的异常,然后捕获该异常。如果没有 try 和 catch 块,此程序将失败。
class ProgramTryCatch
{
static void Main()
{
int x=0, y=0;
try
{
x = 10 / y;
}
catch (System.DivideByZeroException)
{
System.Console.WriteLine("There was an attempt to divide by zero.");
}
}
}
分清 catch 代码检测的异常的具体类型是很好的编程习惯。每个 try 可以有多条 catch 语句,分别处理不同的异常。
finally 块
finally 块中包含的代码始终会执行,无论是否发生异常。使用 finally 块来确保资源已返回:例如,确保文件已关闭。
try
{
// Code to try here.
}
catch (SomeSpecificException ex)
{
// Code to handle exception here.
}
finally
{
// Code to execute after try (and possibly catch) here.
}
使用异常处理
异常并不总是程序中发生灾难性问题的标志。通常,异常是留下不再相关的代码节的简便方法,或是方法不成功的信号。许多 .NET Framework 类方法创建异常以警告特定的情况。
您也可以使用 throw 关键字来引发自己的异常。例如:
class ProgramThrow
{
static void DoWork(int x)
{
if (x > 5)
{
throw new System.ArgumentOutOfRangeException("X is too large");
}
}
static void Main()
{
try
{
DoWork(10);
}
catch (System.ArgumentOutOfRangeException ex)
{
System.Console.WriteLine(ex.Message);
}
}
}
当认为有发生一些意外情况的可能时,请在程序中使用异常。例如,当处理来自用户的输入、读文件或访问 Internet 信息时。