一、什么是C#中的异常?
异常是程序运行中发生的错误,异常处理是程序的一部分。C#中的异常类主要是直接或者间接的派生于 System.Exception类 ,也就是说System.Exception类是所有预定义的系统异常的基类。错误的出现并不总是编写应用的程序员的原因,有的时候应用程序也会因为终端用户的操作不当而发生错误。无论如何,在编写程序前都应该预测应用程序和代码中出现的错误。
二、常见的异常都有哪些?
① ArrayTypeMismatchException
向数组中存数据时,存入的数据与数组定义的数据类型不同的时候便会出现该异常
② DivideByZeroException
用零除整数时引发该异常
③ IndexOutOfRangeException
数组越界异常
④ NullReferenceException
对象引用为空异常
⑤ OverflowException
算数运算溢出
⑥ InvalidCastException
运行时强制转换无效异常
三、异常处理
使用如下代码结构来捕获和处理异常
try{
//try块中包含容易产生异常的代码
}
catch{
//异常处理代码
}
finally{
//用于消除try块中分配的任何资源
//以及即使发生异常也需要继续运行的代码
}
其中finally代码块是try-catch结构执行完成后,无论是否发生异常,finally代码块都会执行。即便是写代码时在try-catch结构里return了,仍旧是会执行了finally代码块之后再去return。
接下来看一个简单的异常捕获及处理的例子:
public class MyException
{
public static void Main()
{
try
{
A();
B();
C(null);
}
//捕获A,B,C方法抛出的异常
catch (Exception ex)
{
//打印出异常信息
Console.WriteLine(ex);
Console.ReadKey();
}
}
static void A()
{
// throw语法.
try
{
//引发零除异常
int value = 1 / int.Parse("0");
}
catch
{
//捕获到异常不做处理继续抛出异常
throw;
}
}
static void B()
{
// 过滤异常类型.
try
{
int[] array = new int[]{ 1, 2, 3 };
//引发数组越界异常
array[6] = 4;
}
//捕获到数组越界异常
catch (IndexOutOfRangeException ex)
{
//抛出数组越界异常
throw ex;
}
}
static void C(string value)
{
// 创建新的异常.
if (value == null)
{
//抛出新的异常
throw new ArgumentNullException("value");
}
}
}