全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C#中try...catch的使用与常见面试题分享

前言

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小时内与您取得联系。