Menu
×
   ❮   
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# 会抛出一个 **异常**(抛出一个错误)。


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 语句允许您执行代码,在 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.");
}

输出将是:

出现错误。
“try catch”已完成。
自己尝试 »

throw 关键字

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

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

示例

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);

输出将是:

访问已授予 - 您已足够大!
自己尝试 »

×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.