C#异常处理核心是try-catch-finally结构:try执行可能出错代码,catch按从具体到一般顺序捕获异常,finally确保资源清理;推荐用throw;保留堆栈、using替代手动finally。

在C#中处理异常,核心是用 try-catch-finally 结构捕获并响应运行时错误,避免程序崩溃,同时保障资源正确释放。
基本语法:try-catch-finally怎么写
标准结构包含三部分:try 块放可能出错的代码;catch 块捕获指定类型的异常并处理;finally 块无论是否出错都会执行,适合清理资源(如关闭文件、释放连接)。
示例:
try{ int result = 10 / int.Parse("abc"); // 会抛出 FormatException}catch (FormatException ex){ Console.WriteLine("输入格式不对:" + ex.Message);}catch (DivideByZeroException ex){ Console.WriteLine("除零错误:" + ex.Message);}finally{ Console.WriteLine("不管怎样,这行都会执行");}
捕获多个异常类型要注意顺序
catch块按从具体到一般的顺序排列。如果先写 Exception(最顶层基类),后面的更具体的异常类型就永远进不去了。
✅ 正确:先 catch ArgumentNullException,再 catch ArgumentException,最后 catch Exception ❌ 错误:把 Exception 放在最前面,后面所有 catch 都失效
用 throw 和 throw ex 的区别
重新抛出异常时,选对方式很重要:
throw; —— 保留原始异常堆栈信息,推荐在 catch 中做日志后继续上抛 throw ex; —— 重置堆栈,只保留当前位置,会丢失原始出错点,一般避免使用 throw new CustomException("提示", ex); —— 包装异常,既提供业务语义,又保留内层异常(InnerException)供排查
finally里别写可能抛异常的逻辑
finally 块本意是“必须执行”,但如果它自己又抛异常,会覆盖 try 或 catch 中的异常,导致真正问题被掩盖。
关闭文件、数据库连接等操作,建议用 try-catch 包一层再放在 finally 中 更推荐用 using 语句 自动释放资源,它底层就是 try-finally 的封装,更安全简洁
例如:
using (var file = new FileStream("data.txt", FileMode.Open)){ // 使用文件} // 自动调用 Dispose,无需手动写 finally
基本上就这些。掌握好 try-catch-finally 的分工和细节,异常处理就不复杂但容易忽略。
以上就是C#怎么处理异常 C# try-catch-finally异常捕获方法的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1443176.html
微信扫一扫
支付宝扫一扫