前言

C#中Try-Catch语句大家都很熟悉了,但是细究起来,还是有很多东西可讲的。最近在翻看之前总结的常见面试题中,发现关于try...catch异常处理的还是蛮多了,今天看到这个面试题,也就重新学习一下。
try..catch语法
try-catch语句由一个try块后跟一个或多个catch子句构成,这些子句制定不同的异常处理程序。
引发异常时,公共语言运行时(CLR)会查找处理此异常的catch语句。如果当前执行的方法不包含这样的catch块,则CLR会查看调用当前方法的方法,然后会遍历叠用堆栈。如果找不到catch块,则CLR会向用户显示一天有关未处理的异常的消息并停止执行程序。
try块包含可能导致异常的保护代码。该块一直执行到引发异常或成功完成为止。
class Program
{
static void Main(string[] args)
{
object o = null;
try
{
//强制转换 null 对象的尝试引发 NullReferenceException 异常
int i = (int)o;
}
catch (NullReferenceException ex)
//1.虽然可以使用不带参数的 catch 子句捕捉任何类型的异常,但不推荐这种用法。 通常,您应该只捕捉那些您知道如何从中恢复的异常。 因此,应该总是指定一个从 System.Exception 派生的对象参数。
//2.在同一个 try-catch 语句中可以使用一个以上的特定 catch 子句。 这种情况下 catch 子句的顺序很重要,因为会按顺序检查 catch 子句。 将先捕获特定程度较高的异常,而不是特定程度较小的异常。 如果对 catch 块进行排序以使永远不能达到后面的块,编译器将产生错误。
//3. int i = (int)o; 很有可能引发NullReferenceException异常,所以将此catch放在前面
//4.如果将catch (Exception ex)放在第一个,将不会达到后面的块,编译器将产生错误。
{
Console.WriteLine(ex.Message);
}
catch (DivideByZeroException div)
{
Console.WriteLine(div.Message);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.Read();
}
try-catch的基本语法如上面所述,try-catch的执行顺序是:try块中的代码执行出现异常将执行catch块中的代码,如果try块中的执行没有错误,将try块中的代码执行完,不会执行catch块中的语句。
try-catch-finally:不管是否有异常,finally块中的代码都会执行,finally块常用于资源的释放等。
try-catch的笔试题
第一种:值类型的
static int GetResult()
{
int a = 1;
int b = 2;
int n = 1;
try
{
int k = a / b;
return n;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
throw;
}
finally//不管有没有发生异常 finally都会执行
{
n++;
}
}
可能你已经知道结果了:1,为什么呢?咱们可以看看反编译的代码,你就会清楚为什么了。
第二种:引用类型的
static Person GetResult()
{
int a = 1;
int b = 2;
Person p = new Person();
p.Age = 1;
try
{
int k = a / b;
return p;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
throw;
}
finally//不管有没有发生异常 finally都会执行
{
p.Age++;
}
}
那么返回的这个person的age是多少呢?先看反编译的结果:
结果为:2
总结
这个题考察还是try-catch-finally的执行顺序,以及引用类型和值类型,这里总结这个,只是换个角度重新学习一下。
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# c
# try
# catch
# 用法
# catch的使用
# 解答“60k”大佬的19道C#面试题(上)
# 一道关于C#参数传递的面试题分析
# C#常见算法面试题小结
# Question:基于C#连续赋值的面试题(解答)
# Question:基于C#连续赋值的面试题介绍
# C# 超高面试题收集整理
# 解答“60k”大佬的19道C#面试题(下)
# 子句
# 放在
# 可以使用
# 反编译
# 面试题
# 好了
# 第一个
# 大家都
# 也就
# 多个
# 有很多
# 找不到
# 遍历
# 较高
# 很重要
# 什么呢
# 你已经
# 这篇文章
# 将此
# 较小
相关文章:
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
制作表格网站有哪些,线上表格怎么弄?
常州自助建站工具推荐:低成本搭建与模板选择技巧
javascript中对象的定义、使用以及对象和原型链操作小结
,如何利用word制作宣传手册?
移民网站制作流程,怎么看加拿大移民官网?
Swift中swift中的switch 语句
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
临沂网站制作企业,临沂第三中学官方网站?
个人网站制作流程图片大全,个人网站如何注销?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
制作宣传网站的软件,小红书可以宣传网站吗?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
海南网站制作公司有哪些,海口网是哪家的?
,网页ppt怎么弄成自己的ppt?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
如何配置WinSCP新建站点的密钥验证步骤?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
如何在IIS7中新建站点?详细步骤解析
表情包在线制作网站免费,表情包怎么弄?
平台云上自助建站如何快速打造专业网站?
小程序网站制作需要准备什么资料,如何制作小程序?
建站主机服务器选购指南:轻量应用与VPS配置解析
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
建站主机是否等同于虚拟主机?
建站之星导航菜单设置与功能模块配置全攻略
如何选择美橙互联多站合一建站方案?
代刷网站制作软件,别人代刷火车票靠谱吗?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
北京企业网站设计制作公司,北京铁路集团官方网站?
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
建站之星×万网:智能建站系统+自助建站平台一键生成
如何配置FTP站点权限与安全设置?
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
如何高效生成建站之星成品网站源码?
深入理解Android中的xmlns:tools属性
如何选择网络建站服务器?高效建站必看指南
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
公司门户网站制作流程,华为官网怎么做?
*请认真填写需求信息,我们会在24小时内与您取得联系。