异常介绍
C# 语言的异常处理功能有助于处理在程序运行期间发生的任何意外或异常情况。
异常处理功能使用 try
、catch
和 finally
关键字来尝试执行可能失败的操作、在你确定合理的情况下处理故障,以及在事后清除资源。
公共语言运行时 (CLR)、.NET/第三方库或应用程序代码都可生成异常。 异常是使用 throw
关键字创建而成。
在许多情况下,异常并不是由代码直接调用的方法抛出,而是由调用堆栈中再往下的另一方法抛出。 如果发生这种异常,CLR 会展开堆栈,同时针对特定异常类型查找包含 catch
代码块的方法,并执行它找到的首个此类 catch
代码块。 如果在调用堆栈中找不到相应的 catch
代码块,将会终止进程并向用户显示消息。
在以下示例中,方法用于测试除数是否为零,并捕获相应的错误。 如果没有异常处理功能,此程序将终止,并显示 DivideByZeroException was unhandled 错误。
public class ExceptionTest
{
static double SafeDivision(double x, double y)
{
if (y == 0)
throw new DivideByZeroException();
return x / y;
}
public static void Main()
{
// Input for test purposes. Change the values to see
// exception handling behavior.
double a = 98, b = 0;
double result;
try
{
result = SafeDivision(a, b);
Console.WriteLine("{0} divided by {1} = {2}", a, b, result);
}
catch (DivideByZeroException)
{
Console.WriteLine("Attempted divide by zero.");
}
}
}
什么时候应该使用异常
异常用于指示在运行程序时发生了错误。 此时将创建一个描述错误的异常对象,然后使用 关键字引发。 然后,运行时搜索最兼容的异常处理程序。
当存在下列一种或多种情况时,程序员应引发异常:
1.方法无法完成其定义的功能。</