C#基础-try,catch用法实例

本文详细介绍了C#中的结构化异常处理,包括try、catch和finally关键字的使用。在try块中编写可能抛出异常的代码,catch块捕获特定类型的异常,finally块确保某些代码无论是否发生异常都会执行。通过实例解析了异常处理流程,帮助理解如何在C#中有效管理异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文详解try catch finally 用法

目录

定义

用法

异常

实例


定义

C#语言包含结构化异常处理(Structured Exception HandlingSEH))的语法。用 3 个关键字可以标记

### C# 中 `try-catch` 的基本用法C# 编程中,`try-catch` 是一种重要的异常处理机制。它允许开发者捕获并处理运行时可能出现的错误或异常情况[^4]。 #### 基本结构 以下是 `try-catch` 结构的基本形式: ```csharp try { // 可能会抛出异常的代码块 } catch (SpecificExceptionType exceptionVariable) { // 处理特定类型的异常 } finally { // 不管是否有异常发生都会执行的代码块 } ``` - **`try`**: 定义了一个代码块,在该代码块中可能会触发异常- **`catch`**: 捕获由 `try` 块中产生的异常,并对其进行处理。可以有多个 `catch` 块来分别处理不同类型的异常- **`finally`**(可选): 无论是否发生了异常,这个部分中的代码总会被执行,通常用来释放资源或者清理操作[^3]。 #### 示例:捕捉具体异常 当需要针对某种特定类型的异常做出反应时,可以在 `catch` 子句中指定相应的异常类。例如,如果希望检测除零错误,则可以用以下方法实现: ```csharp using System; class Program { static void Main(string[] args){ int numerator = 10; int denominator = 0; try { Console.WriteLine(numerator / denominator); } catch(DivideByZeroException e) { Console.WriteLine("无法除以零:" + e.Message); } } } ``` 上述例子展示了如何通过 `DivideByZeroException` 来专门应对整数除法运算中的非法行为——即分母为零的情形[^1]。 #### 示例:多层异常捕获 有时一个函数内部会产生多种不同的异常类型。在这种情况下,可以通过定义一系列按优先级排列的不同种类的 `catch` 节点来进行分类管理。注意顺序很重要;更精确匹配的子类别应该放在前面以便先被识别出来。 ```csharp using System; using System.Net.Http; public class ExampleClass { public async Task FetchDataAsync(){ HttpClient client = new HttpClient(); try { HttpResponseMessage response = await client.GetAsync("http://example.com"); response.EnsureSuccessStatusCode(); } catch(HttpRequestException hre) where(hre.StatusCode == 404){ Console.WriteLine("请求失败,状态码:"+(int)hre.StatusCode+" "+hre.ReasonPhrase); } catch(Exception ex){ Console.WriteLine("未知错误:"+ex.ToString()); } } } ``` 这里我们不仅考虑到了 HTTP 请求过程里可能遇到的各种网络层面的问题(`HttpRequestException`),还准备好了兜底方案去接纳任何其他不可预见状况的发生[^2]。 #### 抛出自定义异常 除了被动接收来自框架或其他组件传递过来的标准异常之外,有时候我们也希望自己主动制造一些信号告诉调用方某些特殊条件已经达成。这就可以借助于 `throw` 关键字完成自定义异常投掷动作。 ```csharp if(someConditionIsMet()){ throw new InvalidOperationException("当前状态下不允许继续!"); } ``` 以上片段说明了怎样利用内置异常类型创建新的实例并向外发送通知。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来无限

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值