异常(Exception)就是程序执行期间发生的问题。无论编程技术有多好,程序都难免 出现异常情况,而且错误发生的原因并不总在程序员,比如用户输入了非法数据,要读取 的文件不存在等等。如果不处理这些异常,程序可能会崩溃,但如果在程序中过多的处理 这些异常,会使程序结构不清晰。为此,C#为我们提供了一套完美的方案,让我们在程序 主线之外处理异常,不但使程序更加健壮、更加容错,而且保持了程序结构的清晰。
- try-catch-finally结构
try {
Console.Write("请输入分母:");
//下面的语句可能产生 FormatException 异常
int denominator = Convert.ToInt32(Console.ReadLine());
//下面的语句可能产生 DivideByZeroException 异常
double result = 100 / denominator;
Console.WriteLine("结果:100 / {0} = {1}",denominator,result);
}
catch (DivideByZeroException)
{
Console.WriteLine("分母不能为零!输入的字符串不能转换为数字。");
}
catch (FormatException)
{
Console.WriteLine("格式错误!");
}
finally {
Console.WriteLine("这是 finally 块。");
//其它代码 //......; ......;
}
try-catch-finally结构
异常可以主动进行判断,在得到异常时主动抛出异常,throw语句用于主动抛出异常
在 C#中使用 thow 语句抛出异常,其一般格式为:
可能发生异常的代码放在 try 块中,异常处理代码放在 catch 块中,不管是否发生异常, 程序都要执行 finally 块中的代码.
.NET 提供了丰富的异常类型,所有的异常类型都派生于 Exception 类。
常用异常类
Exception 类和其他一般类一样,有几个公有属性,通过这些属性可以非常方便的了解 异常信息。其中比较重要的两个属性是 Message 和 StackTrace。属性 Message 用于描述异 常的原因,属性 StackTrace 用于描述异常的堆栈信息,即发生异常位置。