最适合网络开发者的网站
C# 语言。W3Schools 英文课程

尿素 西斯

C# 异常 - Try..Catch


C# 异常

执行 C# 代码时,可能会发生不同的错误:程序员的编码错误、错误输入导致的错误或其他不可预见的事情。

当发生错误时,C# 通常会停止并生成错误消息。术语为:C# 将抛出 例外 (抛出错误)。


C# 尝试并捕获

try 语句允许您定义一个代码块,以便在执行时测试是否存在错误。

catch 语句允许您定义在 try 块中发生错误时要执行的代码块。

trycatch 关键词成对出现:

句法

try
{
  //  Block of code to try
}
catch (Exception e)
{
  //  Block of code to handle errors
}

考虑以下示例,我们创建一个包含三个整数的数组:

这将产生一个错误,因为 我的数字[10] 不存在。

int[] myNumbers = {1, 2, 3};
Console.WriteLine(myNumbers[10]); // error!

错误信息将会是这样的:

System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'

如果发生错误,我们可以使用 try...catch 捕获错误并执行一些代码来处理它。

在下面的例子中,我们在 catch 块中使用变量(e)以及内置 Message 属性,它输出描述异常的消息:

例子

try
{
  int[] myNumbers = {1, 2, 3};
  Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{
  Console.WriteLine(e.Message);
}

输出将是:

Index was outside the bounds of the array.
亲自尝试 »

你也可以输出自己的错误信息:

例子

try
{
  int[] myNumbers = {1, 2, 3};
  Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{
  Console.WriteLine("Something went wrong.");
}

输出将是:

Something went wrong.
亲自尝试 »

最后

finally 语句让你执行代码,之后try...catch,无论结果如何:

例子

try
{
  int[] myNumbers = {1, 2, 3};
  Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{
  Console.WriteLine("Something went wrong.");
}
finally
{
  Console.WriteLine("The 'try catch' is finished.");
}

输出将是:

Something went wrong.
The 'try catch' is finished.
亲自尝试 »

throw 关键字

throw 语句允许您创建自定义错误。

throw 语句与异常类。C# 中有许多可用的异常类: ArithmeticException, FileNotFoundException, IndexOutOfRangeException, TimeOutException, ETC:

例子

static void checkAge(int age)
{
  if (age < 18)
  {
    throw new ArithmeticException("Access denied - You must be at least 18 years old.");
  }
  else
  {
    Console.WriteLine("Access granted - You are old enough!");
  }
}

static void Main(string[] args)
{
  checkAge(15);
}

程序中显示的错误信息将是:

System.ArithmeticException: 'Access denied - You must be at least 18 years old.'

如果 age 是 20,你会不是 得到一个异常:

例子

checkAge(20);

输出将是:

Access granted - You are old enough!
亲自尝试 »