菜单
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

C# 异常 - Try..Catch


C# 异常

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

当发生错误时,C# 通常会停止并生成一条错误消息。这个技术术语是:C# 将**抛出(throw)**一个**异常**(抛出一个错误)。


C# try 和 catch

try 语句允许您定义一个代码块,在执行时对其进行错误测试。

catch 语句允许您定义一个代码块,在 `try` 块中发生错误时执行。

trycatch 关键字成对出现

语法

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

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

这将生成一个错误,因为 myNumbers[10] 不存在。

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

错误消息将类似如下内容

System.IndexOutOfRangeException: '索引超出了数组的界限。'

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

在以下示例中,我们在 catch 块中使用变量(e)以及内置的 Message 属性,该属性会输出一条描述异常的消息

示例

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

输出将是:

索引超出了数组的界限。
自己动手试一试 »

您也可以输出自己的错误消息

示例

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

输出将是:

发生了错误。
自己动手试一试 »


Finally

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.");
}

输出将是:

发生了错误。
The 'try catch' is finished.
自己动手试一试 »

throw 关键字

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

throw 语句与一个**异常类**一起使用。C# 中有许多可用的异常类:ArithmeticExceptionFileNotFoundException IndexOutOfRangeExceptionTimeOutException 等等。

示例

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: '访问被拒绝 - 您必须至少 18 岁。'

如果 age 是 20,您将**不会**收到异常。

示例

checkAge(20);

输出将是:

Access granted - You are old enough!
自己动手试一试 »

×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持