c# 异常处理

异常类

.NET Framework 类库中的所有异常都派生于 Exception 类,异常包括系统异常应用异常

默认所有系统异常派生于 System.SystemException,所有的应用程序异常派生于 System.ApplicationException。

系统异常一般不可预测,比如内存堆栈溢出,空对象引用,权限限制,硬件读取错误等等。

应用程序异常一般可以预测,比如文件对象找不到啦,值不在范围内啦,数据类型不一致等等,设计,处理逻辑可以判断的。

常见的系统异常类                         说明

System.OutOfMemoryException    用 new 分配内存失败

System.StackOverflowException 递归过多、过深

System.NullReferenceException 对象为空

Syetem.IndexOutOfRangeException 数组越界

System.ArithmaticException  算术操作异常的基类

System.DivideByZeroException 除零错误

System.IO.IOException  IO操作期间发生错误时引发的异常

System.Net.WebException 此异常与网络有关

System.Data.SqlClient.SqlException 异常与数据库(特别是SQLServer)有关

System.InvalidCastException 由于未定义强制类型转换而无法从一种类型转换为另一种类型时,将引发该错误

在 C# 语言中异常与异常处理语句

 try ... catch... finally

try:用于检查发生的异常,并帮助发送任何可能的异常。

catch:以控制权更大的方式处理错误,可以有多个 catch 子句。

可将具有不同异常类的多个 catch 块链接在一起。 代码中 catch 块的计算顺序为从上到下,但针对引发的每个异常,仅执行一个 catch 块。 将执行指定所引发的异常的确切类型或基类的第一个 catch 块。 如果没有 catch 块指定匹配的异常类,则将选择不具有类型的 catch 块(如果语句中存在)。 务必首先定位具有最具体的(即,最底层派生的)异常类的 catch 块。

finally:无论是否引发了异常,finally 的代码块都将被执行

finally 块可用于发布资源(如文件流、数据库连接和图形句柄)而无需等待运行时中的垃圾回收器来完成对象

throw异常都是使用 throw 关键字创建而成。当需要抛出一个异常时,或者自定义异常,可以用 throw 关键字.

注意:

  1. 较高层次上下文捕捉较低抛出的异常。

try

{

 // Code to try goes here.

}

catch (SomeSpecificException ex)

{

// Code to handle the exception goes here.

 }

Finally

 {

// Code to execute after the try (and possibly catch) blocks // goes here.

 }

FileStream? file = null;

FileInfo fileinfo = new System.IO.FileInfo("./file.txt");

 Try

 {

file = fileinfo.OpenWrite();

 file.WriteByte(0xF);

}

finally

{ // Check for null because OpenWrite might have failed.

file?.Close();

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/410743.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ 面试八股题整理

前言:本文是博主网络自行收集的一些RabbitMQ相关八股文,还在准备暑期实习,后续应该会持续更新...... 参考:三天吃透RabbitMQ面试八股文_牛客网 目录 RabbitMQ概述 什么是 RabbitMQ? 说一说RabbitMQ中的AMQP 为什么…

rancher change domain name 【rancher 更改域名】

文章目录 1. 预备条件2. 准备全部集群的直连 kubeconfig 配置文件3. 准备证书4. 更新证书4.1 Rancher 单节点运行(默认容器自动生成自签名 SSL 证书)#4.2 Rancher 单节点运行(外置自签名 SSL 证书)#4.3 Rancher HA 5. 修改 Ranche…

前端解析后端返回文件流格式数据

当后端接口返回数据是一个文件流数据时,如下后端返回给我的是一个pdf文件流数据 methods: {gotoPri() {protocolApi().then(res > {this.createPdf(res.data,XXX协议)})},createPdf(res, name) {// Blob构造函数返回一个新的 Blob 对象并指定type类型。let blob …

Vue.js+SpringBoot开发智能停车场管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容A. 车主端功能B. 停车工作人员功能C. 系统管理员功能1. 停车位模块2. 车辆模块3. 停车记录模块4. IC卡模块5. IC卡挂失模块 三、界面展示3.1 登录注册3.2 车辆模块3.3 停车位模块3.4 停车数据模块3.5 IC卡档案模块3.6 IC卡挂…

Pytorch学习(杂知识)

目录 Mini-batch 魔法函数 DataLoader与DataSet transformers的简介 torchvision简介 torch.no_grad() Softmax ReLu 随机梯度下降(Stochastic Gradient Descent,SGD) torch.nn.CrossEntropyLoss(),交叉损失函数 Tenso…

掌握C语言指针,轻松解锁代码高效性与灵活性

1. 指针与地址 1.1 概念 我们都知道计算机的数据必须存储在内存里,为了正确地访问这些数据,必须为每个数据都编上号码,就像门牌号、身份证号一样,每个编号是唯一的,根据编号可以准确地找到某个数据。而这些编号我们就…

申创贝拓电气设备邀您参观2024生物发酵展

参展企业介绍 BETTO贝拓电气成立于2017年,初期总部坐落于安徽合肥,从事工业电控机柜的设计和销售工作。2022年总部迁往上海,有了自己的制造基地,涉及制造和销售工业控制柜、操作台、IT机柜、户外机柜、人机界面、悬臂、电气安装成…

怎么把pdf转换成word?

怎么把pdf转换成word?Pdf和word在电脑上的使用非常广泛,pdf和word分别是由 Adobe和Microsoft 分别开发的电脑文件格式。PDF 文件可以在不同操作系统和设备上保持一致的显示效果,无论是在 Windows、Mac 还是移动设备上查看,都能保持…

车载测试面试:题库+项目

车载测试如何面试(面试技巧)https://blog.csdn.net/2301_79031315/article/details/136229809 入职车载测试常见面试题(附答案)https://blog.csdn.net/2301_79031315/article/details/136229946 各大车企面试题汇总(含答案&am…

基于R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习技术应用

Meta分析是针对某一科研问题,根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法,对来源不同的研究成果进行收集、合并及定量统计分析的方法,最早出现于“循证医学”,现已广泛应用于农林生态,资源环境等方面。…

tigramite教程(一)解释与假定或发现的因果模型相关的关联

文章目录 0、生成一些具有同时依赖关系的示例过程1、估计(马尔可夫等价类的)因果图2、如果马尔可夫等价类有多个成员(存在未定向的边),选择类的一个成员,这可以自动完成3、对从图中提取的因果父节点进行线性…

跨端轻量JavaScript引擎的实现与探索

一、JavaScript 1.JavaScript语言 JavaScript是ECMAScript的实现,由ECMA 39(欧洲计算机制造商协会39号技术委员会)负责制定ECMAScript标准。 ECMAScript发展史: 时间版本说明1997年7月ES1.0 发布当年7月,ECMA262 标准出台1998年6月ES2.0 发布该版本修改完全符合…

cgroup底层技术研究一、cgroup简介与cgroup命令行工具

本文参考以下文章: 58 | cgroup技术:内部创业公司应该独立核算成本 特此致谢! 一、cgroup简介 1. cgroup是什么 cgroup(Control Group)是Linux内核提供的一种机制,用于对进程或进程组进行资源限制、优先…

IDA使用-2023CICSN华中赛区pwn题逆向为例

文章目录 相关字节标识导入函数和导出函数找程序入口函数选项设置重命名CISCN2023华中赛区分区赛AWDIDA源码main 构造结构体sub_141B() 打开局部变量类型的视图增加变量类型重新定义变量类型再次设置变量类型并重新定义再次设置变量类型并重新定义再次设置变量类型并重新定义 设…

项目实战:Qt监测操作系统cpu温度v1.1.0(支持windows、linux、国产麒麟系统)

若该文为原创文章,转载请注明出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/136277231 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…

linux系统---nginx基础

目录 一、Nginx的概念 二、Nginx常用功能 1、HTTP(正向)代理,反向代理 1.1正向代理 1.2 反向代理 2、负载均衡 2.1 轮询法(默认方法) 2.2 weight权重模式(加权轮询) 2.3 ip_hash 3、web缓存 三、基础特性 四…

@ControllerAdvice 统一管理异常/错误

ControllerAdvice 统一管理异常/错误 文章目录 ControllerAdvice 统一管理异常/错误一、注意事项二、统一管理异常/错误的好处三、代码实现1. 普通方法2. 统一管理ControllerAdvice3. PostMan测试结果 一、注意事项 1. 如果校验注解不指定 message 属性 ,会返回默认消息, 这些…

C++之善用const修饰成员函数

C之善用const修饰成员函数 文章目录 C之善用const修饰成员函数前言1. 约束函数对成员变量的修改2. 允许 const 对象调用3. 在重载函数中提供重载决策总结 前言 ​ 在C编程中,使用const修饰成员函数是一种非常重要的技术手段,它能够提高代码的可维护性、…

Object中的hashCode()

让hashcode方法的返回值为地址 vm参数中输入-XX:UnlockExperimentalVMOptions -XX:hashCode4,如下图: 参考 搞懂JAVAObject中的hashCode()_java_脚本之家 JDK核心JAVA源码解析(9) - hashcode 方法 - 知乎

【k8s】-- 查询 pod 磁盘容量

命令:kubectl get pvc -n 你的namespace --context上下文命名 -o wide 举例:kubectl get pvc -n my-bigdata --contextprod-6 -o wide