引言
异常处理是构建健壮C#应用程序的基石。微软官方统计显示,未妥善处理的异常是导致生产环境崩溃的TOP3原因。本文将深入剖析try-catch-finally
的底层原理,结合企业级开发经验,揭示异常处理的正确姿势,助你写出工业级质量的代码。
一、异常处理核心机制
1.1 异常处理基本结构
try
{
// 可能抛出异常的代码
File.ReadAllText("missing.txt");
}
catch (FileNotFoundException ex) // 特定异常捕获
{
Console.WriteLine($"文件未找到:{ex.FileName}");
}
catch (Exception ex) // 兜底异常捕获
{
Console.WriteLine($"错误代码:{ex.HResult}, 详情:{ex.Message}");
}
finally
{
// 无论是否异常都会执行
Console.WriteLine("资源清理完成");
}
1.2 CLR异常处理原理
-
异常抛出:当代码遇到错误时,CLR创建
Exception
对象并终止当前流程 -
堆栈展开:CLR逆向查找调用堆栈,寻找匹配的
catch
块 -
finally执行:无论是否捕获异常,
finally
块始终执行(常用于资源释放)
1.3 常见异常类型速查表
异常类型 | 典型场景 |
---|---|
NullReferenceExc |