C#中类的异常处理

2473e1d874bb03d433e32df30cd03b41.gif

98b5368593a20fd4a676650b72c44ed2.png

欢迎您成为我的读者,希望这篇文章能给你一些帮助。

前言

日常编码过程中,最重要的技能不是说你学会使用很多最新的编程技术或者做出一个高大上的系统。而是你在写代码过程中,对异常的处理,是否系统可以稳定,健壮。

对于异常的处理在C#中是通过try/cath机制来捕获的,接下来我们一起来看看。

异常是程序中的运行时错误,它违反了系统约束或应用程序约束,或出现了在正常操作时未预料的情形。

比如对于某些变量的非正常赋值或者在参与运算操作时出现错误等。

异常

关于异常,在C#中通过try语句和处理异常机制类保证异常的捕获,防止由于异常的未捕获导致整个程序出现异常提醒,甚至出现崩溃。

异常的要求

  • try块包含为避免出现异常而被保护的代码

  • catch子句部分含有一个或多个catch子句。(处理异常代码段也叫做异常处理子程序)

  • finally块含有在所有情况下都要被执行的代码,无论有没有异常发生。

class Program
{static void Main(string[] args){try{//验证是否有异常的代码Ahui hui = new Ahui();InfoBase info = (InfoBase)hui;Console.WriteLine(hui.GetInfo());Console.WriteLine(info.GetInfo());}catch (Exception ex){//捕获异常,进行异常的处理throw new Exception("异常向上一层抛出!");}            Console.ReadKey();}
}

在处理业务代码时,必须在刚开始就将逻辑上的错误都考虑清楚进行验证处理,比如判空,非正常值,值类型错误等。

其次在通过try/catch机制来捕获非正常的异常,防止程序出现无法把控的错误,导致崩溃。

提示:在业务程序中尽量少用异常进行捕获,如果条件满足要第一时间对异常进行前期处理。<Catch()中的异常处理时间会比较长,而且会导致系统资源被浪费(异常实时被往上抛出)。>

在C#中有很多不同类型的异常可能被发生,BCL定义了许多类,每一个类代表一个指定的异常类型。当一个异常发生时,CLR首先创建该类型的异常对象,其次寻找适当的catch子句以处理它。(所有的异常类都派生自System.Exception类)

关于catch()有三种形式,可以处理不同级别的异常。

第一种 一般异常处理

try{}catch{//一般异常处理}

能接受任何异常,但不能确认引起异常的类型。可对可能发生的异常进行普通处理和清理。

第二种 特定异常处理

try}catch(Exception){//特定异常处理}

把一个异常类的名称作为参数,匹配该指定类或派生自它的异常类的异常。

第三种  带对象的特定异常处理

try}catch(Exception ex){throw new Exception(ex.Message);}

可提供关于异常的多种异常信息,匹配指定的异常或派生自它的异常类的异常。通过异常实例,可得到异常的详细信息。

try}catch (Exception ex){//特定异常处理throw new Exception(ex.Message);}finally { //出现异常后的处理机制}

这里需要特别说明下,关于finally中的代码,不管异常是否被捕获,它都会被执行。

在finally中适合存放释放资源或后续处理的代码。

基础知识日更已经29天,如果大家还想继续查询,可以给个关注,感谢您的支持。

寄语

人生短暂,我不想去追求自己看不见的,我只想抓住我能看得见的。

原创不易,给个关注。

我是阿辉,感谢您的阅读,如果对你有帮助,麻烦点赞、转发  谢谢。

很高兴能和您成为朋友。

0f7b4683b6f36db56e4b06095b87033f.png

47bd6810309497bfad28421577be836c.png

推荐阅读

分享给同做程序员的你我他

毕业四年,我当初是如何走上编程这条路的!

物联网工程专业的迷茫与抉择

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linus Torvalds: 成功的项目源于99%的汗水与1%的创新

2017年2月15日&#xff0c;在加利福尼亚州的开源领袖峰会上&#xff0c;由Linux基金会执行董事Jim Zemlin进行的一次采访中&#xff0c;Torvalds讨论了他如何管理Linux内核的开发以及他对工作的态度。\\\\Linus Torvalds认为&#xff0c;科技行业对创新的颂扬是一种自鸣得意&am…

Large sum

聪明的办法是想&#xff1a;求前10位&#xff0c;那只要前8位加起来&#xff0c;进2位就OK。 本的办法&#xff0c;就是真的加起来&#xff0c;截前面10位。如我。 numList str.split() sum 0 for i in range(0,len(numList)):sum int(numList[i][0:50])print i,numList[i][…

.NET6之MiniAPI(十六):数据保护

对于web&#xff0c;安全是一个永久的话题&#xff0c;所以ASP.NET Core数据保护提供了一个简单&#xff0c;易用的加密API&#xff0c;可以用来保护数据&#xff0c;密钥管理和轮换。ASP.NET Core的数据保护是根据本机的一个key来生成加密码&#xff0c;然后再用这个key来解密…

.NET 云原生架构师训练营(权限系统 代码实现 ActionAccess)--学习笔记

▲ 点击上方“DotNet NB”关注公众号回复“1”获取开发者路线图学习分享 丨作者 / 郑 子 铭 这是DotNet NB 公众号的第188篇原创文章目录开发任务代码实现开发任务DotNetNB.Security.Core&#xff1a;定义 core&#xff0c;models&#xff0c;Istore&#xff1b;实现 defaul…

表格列mouse经过时高亮显示

前几天Insus.NET有练习《表格行mouse经过时高亮显示》http://www.cnblogs.com/insus/p/3715733.html &#xff0c;今天有奇想&#xff0c;是否可以实现mouse经过表的列时&#xff0c;整列高亮呢&#xff1f;Insus.NET就在前一示例中&#xff0c;修心jQuery来练习。 修改.mouseo…

REDIS调优

2019独角兽企业重金招聘Python工程师标准>>> 1、优先使用批量操作&#xff0c;例如hset&#xff0c; 2、批量命令用管道技术 3、因为redis是单线程的防止慢命令阻塞 4、可以搭建主从读写分离集群&#xff0c;费时的操作都移到读服务 用slowlog get 查看耗时操作 转载…

分库分表下极致的优化

题外话这边说一句题外话,就是ShardingCore目前已经正式加入 NCC 开源组织了,也是希望框架和社区能发展的越来越好,希望为更多.netter提供解决方案和开源组件介绍依照惯例首先介绍本期主角:ShardingCore 一款ef-core下高性能、轻量级针对分表分库读写分离的解决方案&#xff0c;…

关于photoshop

photoshop的常见快捷键&#xff1a;&#xff08;只写了一部分&#xff0c;还有的实用快捷键不知道&#xff09; 矩形、椭圆选框工具 M移动工具 V 套索、多边形套索、磁性套索 L 魔棒工具 W 裁剪工具 C 切片工具、切片选择工具 K 喷枪工具 J 画笔工具、铅笔工具 B 像皮图章、图案…

linux(centos) NET模式网络配置

2019独角兽企业重金招聘Python工程师标准>>> linux虚拟机一般使用桥接和net模式&#xff0c;但是由于桥接在不同的网络环境中&#xff0c;需要重新配置&#xff0c;所以建议使用net模式&#xff0c;net模式的配置步骤如下&#xff1a; 虚拟机网络连接使用NAT模式&am…

LeetCode之Island Perimeter

1、题目 You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represents water. Grid cells are connected horizontally/vertically (not diagonally). The grid is completely surrounded by water, and there is exactly one is…

java获取tomcat目录结构_tomcat目录结构简介_动力节点Java学院整理

tomcat目录结构简介如果我们有一个web应用&#xff0c;名称为“mail”(同时也是web应用所在目录的名称)&#xff0c;那么其目录内不同类型的文件应该服从如下放置的规则&#xff1a;一般来讲&#xff1a;对于html、jsp、css、js文件等&#xff0c;可以直接放置在web应用所在目录…

Linux和Windows下部署BeetleX服务网关

有朋友希望写一篇BeetleX服务网关部署到Linux和windows下并以服务的方式运行的介绍文章。接下详细介绍如何做并简单介绍一下网的使用。首先需要在官网(beetlex-io.com)下载对应版本的BeetleX服务网关&#xff08;现阶段只支持linux64和windows64&#xff09;&#xff0c;下载完…

HDU 1978 How many ways DP问题

How many ways Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2568 Accepted Submission(s): 1509 Problem Description这是一个简单的生存游戏&#xff0c;你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的…

课堂练习-找水王绪

题目&#xff1a;三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水&#xff0c;传说在论坛上有一个“水王”&#xff0c;他不但喜欢发帖&#xff0c;还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。 如果你有一张当前论坛的…

java添加事件监听器_Java事件监听器的四种实现方式

自身类作为事件监听器外部类作为事件监听器匿名内部类作为事件监听器内部类作为事件监听器自身类作为事件监听器:1 import javax.swing.*;2 import java.awt.*;3 import java.awt.event.*;45 /**6 *Java事件处理机制:自身类作为事件监听器7 *authorWinty(wintysgmail.com)8 *ve…

使用Brighter实现轻量型独立管道

前言上次&#xff0c;我们介绍了使用MediatR的Behaviors功能&#xff0c;在业务层实现管道模式。(《为什么应该在业务层实现管道模式&#xff0c;而不用ASP.NET Core Middleware实现 | 2点原因和实现方式》)但是&#xff0c;这种管道有个特点或者说缺点&#xff0c;不管你需不需…

CentOS6最小化安装默认启动的服务说明

centos6.2最小化安装后执行chkconfig --list,显示所有服务&#xff0c;如下图&#xff1a;下边分别进行说明&#xff1a;auditd&#xff1a;审核守护进程当 auditd 运行的时候&#xff0c;审核信息会被发送到一个用户配置日志文件中&#xff08;默认的文件是 /var/log/audit/au…

[有奖励]GeneralUpdate开源项目招募开发者

[有奖励]GeneralUpdate开源项目招募开发者希望看到这篇文章的小伙伴&#xff0c;能看完这篇文章顺便帮忙给项目点一下“star”、转发、“在看”。先在这里谢谢各位了。github仓库地址&#xff1a;https://github.com/WELL-E/AutoUpdatergitee仓库地址&#xff1a;https://gitee…

C/C++ 读取16进制文件

1.为什么有这种需求 因为有些情况需要避免出现乱码。不管什么编码都是二进制的&#xff0c;这样表示为16进制就可以啦。 2.如何读取16进制文件 最近编程用这一问题&#xff0c;网上查了一下&#xff0c;感觉还是自己写吧。 16进制数据一般是:text0x340xb5...&#xff0c;就是0x…

基于PaddleOCR实现AI发票识别的Asp.net Core应用

简要介绍用户批量上传需要识别的照片,上传成功后,系统会启动Hangfire后台Job开始调用PaddleOCR服务返回结果,这个过程有点类似微服务的架构模型。PaddleOCRPaddleOCR是百度AI团队开源的一个项目&#xff0c;应该是目前所有免费开源OCR项目中识别效果最好的,具体可以通过PaddleO…