首页 > 编程语言 >C#语言入门学习(六)

C#语言入门学习(六)

时间:2023-06-04 09:02:53浏览次数:39  
标签:Console 入门 C# 代码 处理 finally catch 异常 语言

1. 异常的概念:

- 异常是在程序执行过程中出现的错误或意外情况。它们可能导致程序无法正常继续执行。
- C#中的异常是一种特殊的对象,用于表示发生的错误或异常情况。当异常发生时,会抛出异常对象。

2. 异常处理的机制:
- 异常处理是一种机制,用于在程序中检测、捕获和处理异常,以便程序可以优雅地处理错误情况并继续执行。
- 在C#中,使用`try-catch-finally`块来处理异常。`try`块中包含可能会抛出异常的代码,`catch`块用于捕获并处理异常,`finally`块中包含无论是否发生异常都会执行的代码。
- 当异常发生时,程序会跳转到最近的匹配的`catch`块,并执行其中的代码。如果没有匹配的`catch`块,异常将继续向上层调用栈传播,直到找到匹配的`catch`块或程序终止。

3. `catch`块的使用:
- `catch`块用于捕获并处理特定类型的异常。可以根据需要使用一个或多个`catch`块来处理不同类型的异常。
- 在`catch`块中可以编写处理异常的代码,例如打印错误消息、记录日志、回滚事务等。
- 可以通过在`catch`块中使用异常对象的属性来获取有关异常的详细信息,如`Message`属性、`StackTrace`属性等。

4. `finally`块的使用:
- `finally`块中的代码无论是否发生异常都会执行。它通常用于释放资源、关闭文件、关闭数据库连接等清理操作。
- `finally`块中的代码在`try`块中的代码执行完毕后执行,即使发生异常也会执行。

5. 自定义异常:
- 除了使用系统定义的异常类型,还可以自定义异常类型来表示特定的错误或异常情况。
- 自定义异常需要继承自`Exception`类或其子类,可以添加自定义的属性和方法,以提供更详细的错误信息和处理逻辑。

通过合理地使用异常处理机制,可以提高程序的健壮性和可靠性。当程序遇到错误或异常情况时,可以通过捕获和处理异常来采取相应的措施,如回滚操作、提供错误提示等,从而保证程序的正常执行。

 

try
{
    // 可能会抛出异常的代码
    int a = 10;
    int b = 0;
    int result = a / b;
    Console.WriteLine("Result: " + result); // 不会执行,因为上一行代码抛出了异常
}
catch (DivideByZeroException ex)
{
    // 捕获并处理特定类型的异常
    Console.WriteLine("Error: " + ex.Message);
}
catch (Exception ex)
{
    // 捕获并处理其他类型的异常
    Console.WriteLine("Unknown Error: " + ex.Message);
}
finally
{
    // 无论是否发生异常,都会执行的代码块
    Console.WriteLine("Finally block executed.");
}

// 继续执行其他代码
Console.WriteLine("Program continues...");

 

标签:Console,入门,C#,代码,处理,finally,catch,异常,语言
From: https://www.cnblogs.com/xykj024/p/17455167.html

相关文章

  • C#语言入门学习(七)
    1.文件操作:-C#提供了丰富的文件操作功能,可以读取和写入文件、创建和删除文件等。-使用`System.IO`命名空间中的类来进行文件操作,如`File`类和`Directory`类。-可以使用`File.Exists`方法检查文件是否存在,使用`File.Open`方法打开文件,使用`File.Create`方法创建文件等......
  • C#语言入门学习(八)
    1.LINQ(LanguageIntegratedQuery):-LINQ是一种在C#中集成查询功能的技术,它提供了一种统一的查询语法,使得可以对各种数据源进行查询和操作,包括对象集合、数据库、XML等。-使用LINQ,可以使用相同的查询语法对不同类型的数据进行查询、筛选、排序和转换等操作,简化了数据处理的编......
  • 通过DSL实现Elasticsearch数据高亮处理
    高亮显示的实现分为两步:1)给文档中的所有关键字都添加一个标签,例如标签2)页面给标签编写CSS样式语法:点击查看代码GET /hotel/_search{  "query": {    "match": {      "FIELD": "TEXT"//查询条件,高亮一定要使用全文检索查询    }  },  "h......
  • 【论文】Crazyswarm论文
    《Crazyswarm:大型纳米四轴飞行器群》论文总结论文名称:Crazyswarm:ALargeNano-QuadcopterSwarm摘要为大量在室内密集编队飞行的微型四轴飞行器定义了一个系统架构。对于状态估计(stateestimation),我们开发了一种方法来可靠地跟踪具有相同运动捕捉标记排列的许多小刚体(无......
  • 通过DSL实现Elasticsearch数据排序功能
    普通字段排序语法:点击查看代码GET /indexName/_search{  "query": {    "match_all": {}  },  "sort": [    {      "FIELD": "desc"  // 排序字段、排序方式ASC、DESC    }  ]}示例:点击查看代码GET/hotel/_search{"q......
  • TypeScript编程 读书笔记
    @目录TypeScript编程读书笔记TypeScript概述关于编译器类型系统javascript和typescript类型系统比较类型全解什么是类型类型术语类型浅谈anyunknownbooleannumberbigintstringsymbol对象类型别名、并集、交集类型别名并集类型和交集类型数组元组null、undefined、void和never枚举......
  • 【超简单】MacBookPro M1/M2芯片Parallels Desktop 虚拟机安装教程
    视频地址:https://www.bilibili.com/video/BV12G411M71T/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=71afb275332e05d921cbb9daf9326add 软件下载链接:夸克网盘链接:https://pan.quark.cn/s/2383902337f1提取码:THRK软件PJ命令:chmod+x./inst......
  • AtCoder Beginner Contest 304
    A-FirstPlayer(abc304a)题目大意依次给定每个人的姓名和年龄,排成一圈。从年龄最小的人依次输出姓名。解题思路找到年龄最小的,依次输出就好了。神奇的代码#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;intmain(void){ios::sync_with_......
  • 【论文】基于DMPC的路径规划
    DMPC论文:《TrajectoryGenerationforMultiagentPoint-To-PointTransitionsviaDistributedModelPredictiveControl》摘要介绍了一种基于分布式模型预测控制(DMPC)的多智能体offline轨迹生成算法。通过预测未来状态并与附近的agents共享此消息,agent能够在朝着目标前......
  • C++面试八股文:指针占用多少个字节?
    某日小二参加XXX科技公司的C++工程师开发岗位4面:面试官:memset、memcpy和strcpy的区别是什么?小二:memset用于将一块内存设置为特定的值,memcpy用于将一块内存从一个位置复制到另一个位置,strcpy用于将一个字符串从一个位置复制到另一个位置。面试官:嗯,不错。那么你知道这三个函......