讲师中心 微信公众号
AI工具推荐 视频效率加速

C#怎么处理异常 C# try-catch-finally异常捕获方法

落伟吖_7414

落伟吖_7414

发布时间:2025-12-16 10:55:03

|

464人浏览过

|

来源于php中文网

原创

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

c#怎么处理异常 c# try-catch-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(最顶层基类),后面的更具体的异常类型就永远进不去了。

Upload audio to AIOZ Stream
Upload audio to AIOZ Stream

快速上传音频至 AIOZ Stream API。支持默认或自定义编码配置创建音频对象,上传文件并完成处理后返回音频链接。

下载
  • ✅ 正确:先 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 的分工和细节,异常处理就不复杂但容易忽略。

热门AI工具

更多
切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

5887

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2508

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

5887

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2508

2023.08.10

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

2765

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

3961

2023.08.14

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

3051

2023.08.31

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

987

2023.09.05

Playwright 测试失败怎么办
Playwright 测试失败怎么办

Playwright测试失败专题汇集超时、定位器匹配、浏览器提前关闭、依赖与插件配置、文件上传、SSL及Docker启动等故障文章,并介绍通过截图、报告和Trace定位错误。

0

2026.10.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
GDB Reference Card
GDB Reference Card

共0课时 | 0人学习

《Debugging with GDB》用户手册
《Debugging with GDB》用户手册

共0课时 | 0人学习

Valgrind FAQ
Valgrind FAQ

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn