C# 异常处理:try-catch-finally 避免程序崩溃

简介: 异常处理用于捕获运行时错误(如空引用、文件不存在),确保程序稳定。通过 `try` 包裹可能出错的代码,`catch` 捕获并处理异常,`finally` 确保资源释放等操作始终执行,提升代码健壮性。

异常处理用于捕获运行时错误(如空引用、文件不存在),保证程序稳定运行,try 包裹可能出错的代码,catch 捕获异常,finally 必执行(如释放资源)。

public class ExceptionDemo
{
    public static void ReadFileSafely(string filePath)
    {
        StreamReader reader = null;
        try
        {
            // 可能出错的代码
            reader = new StreamReader(filePath, System.Text.Encoding.UTF8);
            string content = reader.ReadToEnd();
            Console.WriteLine("文件内容:" + content);
        }
        catch (FileNotFoundException ex)
        {
            // 捕获特定异常(文件不存在)
            Console.WriteLine($"错误:文件未找到 - {ex.Message}");
        }
        catch (IOException ex)
        {
            // 捕获IO相关异常
            Console.WriteLine($"IO错误:{ex.Message}");
        }
        catch (Exception ex)
        {
            // 捕获所有其他异常(兜底)
            Console.WriteLine($"未知错误:{ex.Message}");
        }
        finally
        {
            // 无论是否出错,都释放资源
            reader?.Close();
            Console.WriteLine("文件操作结束(资源已释放)");
        }
    }
}
// 调用示例(故意传入不存在的文件路径)
ExceptionDemo.ReadFileSafely(@"C:\Temp\NotFound.txt");
// 输出:
// 错误:文件未找到 - 找不到文件“C:\Temp\NotFound.txt”。
// 文件操作结束(资源已释放)
相关文章
|
2天前
|
C#
C# 条件判断:if-else 与 switch 的实用场景
条件判断是流程控制的核心。if-else适用于多级条件判断,如根据积分决定会员等级;switch适用于多值匹配,C# 7.0+支持字符串和数值匹配,可清晰处理会员等级对应的优惠策略。
|
2天前
|
存储 C#
C# 实现简单的备忘录模式
备忘录模式在不破坏封装性的前提下,捕获并保存对象的内部状态,以便后续恢复。通过原发器创建备忘录,管理者存储备忘录,可实现状态回滚。
|
2天前
|
设计模式 算法 C#
C# 实现简单的观察者模式
简介:本文介绍了C#中三种常用设计模式的实现:观察者模式用于解耦主题与观察者,策略模式封装可互换的算法族,工厂模式则隐藏对象创建细节,提升代码可维护性与扩展性。
|
2天前
|
安全 C#
C# 实现简单的单例模式(懒汉式)
单例模式确保一个类仅存在一个实例,并提供全局访问点。通过私有构造函数防止外部实例化,结合静态属性和延迟初始化实现线程安全的唯一实例,常用于日志、配置管理等场景。
|
2天前
|
C#
C# 实现简单的 Excel 数据写入工具
基于EPPlus库实现C#将数据写入Excel文件,支持自定义表头与多行数据,自动调整列宽,操作简便,适用于非商业场景的数据导出需求。
|
2天前
|
人工智能 安全 小程序
全球网络钓鱼动态简报(2026年1月)
近期全球网络钓鱼攻击频发,涵盖NPM恶意包、Google Cloud域名滥用、QR码诈骗(Quishing)等多种手法,攻击者通过伪造登录页面、利用合法服务信誉及社会工程学诱导用户泄露凭据。从电商购物季到假期财务需求,再到企业高管与学术机构,各类人群均成目标。新型攻击还涉及Telegram小程序、iCloud日历通知及语音钓鱼,结合AI生成内容与多因素认证绕过技术,隐蔽性更强。专家呼吁加强员工培训、部署行为分析工具、推动无密码认证,并强化对即时通讯与非邮件渠道的风险防控。
27 0
|
2天前
|
SQL 人工智能 分布式计算
从工单、文档到结构化知识库:一套可复用的 Agent 知识采集方案
我们构建了一套“自动提取 → 智能泛化 → 增量更新 → 向量化同步”的全链路自动化 pipeline,将 Agent 知识库建设中的收集、提质与维护难题转化为简单易用的 Python 工具,让知识高效、持续、低门槛地赋能智能体。
|
2天前
|
机器学习/深度学习 人工智能 自然语言处理
瞭望塔丨所有产业都将被 AIGC 重写
大模型如何驱动产业的新范式,如何改变整个人工智能(AI)产业链。
|
2天前
|
运维 监控 算法
智能仓储规模化后,为什么网络总是第一个“背锅”?
本文面向智能仓储系统IT运维负责人,剖析系统规模化后网络层成“背锅侠”的根源:架构滞后、故障模糊、可观测性缺失。提出三大原则——将网络视为核心能力、设计可扩展连接、前置可观测性,助你在多仓部署中提前规避风险,实现运维有底气、业务有预期、架构有弹性。
|
2天前
|
存储 C#
C# 委托(Delegate):实现方法回调
委托是方法的类型,可引用方法并实现回调机制,常用于异步通知与事件触发。通过定义委托,可将方法作为参数传递,并在任务完成后调用多个回调函数,支持灵活的程序解耦与扩展。

热门文章

最新文章