执行 C# 代码时,可能会发生不同的错误:程序员编写的代码错误、由于错误输入而导致的错误或其他不可预见的事情。
当发生错误时,C# 通常会停止并生成错误消息。其技术术语是:C# 将抛出一个例外(抛出错误)。
这个try
语句允许您定义要在执行时测试错误的代码块。
这个catch
语句允许您定义在 try 块中发生错误时要执行的代码块。
这个try
和catch
关键字成对出现:
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
语句与一个一起使用异常类。 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岁的时候,你会不是得到一个例外:
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!