推荐答案
// www.javascriptcn.com code example
try
{
// 尝试执行的代码块
int result = 10 / int.Parse("0"); // 这里会抛出 DivideByZeroException
}
catch (DivideByZeroException ex)
{
// 捕获 DivideByZeroException 异常
Console.WriteLine("捕获到除以零异常: " + ex.Message);
}
catch (Exception ex)
{
// 捕获其他所有异常
Console.WriteLine("捕获到异常: " + ex.Message);
}
finally
{
// 无论是否发生异常,都会执行的代码块
Console.WriteLine("finally 块执行");
}本题详细解读
try 块
try 块用于包含可能会抛出异常的代码。如果在 try 块中的代码抛出了异常,程序会立即跳转到相应的 catch 块进行处理。
catch 块
catch 块用于捕获并处理 try 块中抛出的异常。可以有多个 catch 块,每个 catch 块可以捕获不同类型的异常。catch 块中的代码只有在对应的异常被抛出时才会执行。
finally 块
finally 块中的代码无论是否发生异常都会执行。通常用于释放资源或执行清理操作。即使 try 块中有 return 语句,finally 块中的代码也会在返回之前执行。
异常处理流程
- 程序首先执行
try块中的代码。 - 如果
try块中的代码抛出异常,程序会立即跳转到第一个匹配的catch块。 - 如果没有匹配的
catch块,异常会继续向上抛出,直到被捕获或程序终止。 - 无论是否发生异常,
finally块中的代码都会执行。
注意事项
catch块中的异常类型应该从具体到一般,即先捕获具体的异常类型,再捕获通用的Exception类型。finally块是可选的,但如果存在,它总是会执行。- 在
finally块中不应该抛出异常,否则会覆盖try块中的异常。