22 C#中的异常处理入门 try catch throw
Posted Thinking_Jiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了22 C#中的异常处理入门 try catch throw相关的知识,希望对你有一定的参考价值。
软件运行过程中,如果出现了软件正常运行不应该出现的情况,软件就出现了异常。这时候我们需要去处理这些异常。或者让程序终止,避免出现更严重的错误。或者提示用户进行某些更改让程序可以继续运行下去。
C#编程语言本身就为我们提供了这种异常处理机制。
C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零。或者试图将一个字符串"aaa"转换成整数。
异常提供了一种把程序控制权从某个部分转移到另一个部分的方式。C# 异常处理时建立在四个关键词之上的:try、catch、finally 和 throw。
- try:一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch 块。
- catch:程序通过异常处理程序捕获异常。catch 关键字表示异常的捕获。
- finally:finally 块用于执行给定的语句,不管异常是否被抛出都会执行。例如,如果您打开一个文件,不管是否出现异常文件都要被关闭。
- throw:当问题出现时,程序抛出一个异常。使用 throw 关键字来完成。
语法
假设一个块将出现异常,一个方法使用 try 和 catch 关键字捕获异常。try/catch 块内的代码为受保护的代码,使用 try/catch 语法如下所示:
try { // 引起异常的语句 } catch (ExceptionName e1) { // 错误处理代码 } catch (ExceptionName e2) { // 错误处理代码 } catch (ExceptionName eN) { // 错误处理代码 } finally { // 要执行的语句 }
C#提供了很多种异常,我们在这里只要掌握最基本的异常Exception就可以啦。在catch语句中我们只处理Exception这个最基本的异常。
下面我们看一个具体的例子,来更加清楚的理解一下C#的异常处理。
你创建一个项目。解决方案名称为Sloution22,项目名称为Exercise22,项目类型为控制台程序。点击Program.cs. 在里边加入这些代码。
我在这里简要的说明一下这段代码。
1. 27行-45行 我们新建了一个ExceptionTest 方法。在这个方法中要求用户输入一个整数。如果用户输入一个字符串,我们的程序会产生异常。
2. 39行 我们用throw抛出了一个我们自己定义的异常。在里边加入了我们想传递的一些信息。
3. 41行-44行 finally语句是可选的。只有当需要做一些例如资源释放的操作的时候,才是需要的。不管有没有异常产生 finally部分都会执行。
4. 13行-23行 调用ExceptionTest方法。同时捕获异常。
5. 16行 如果调用ExceptionTest方法出现异常,这条语句不会执行。否则正常执行。
6. 21行 输出异常的简要信息
7. 22行 输出异常的详细信息。例如出错的代码位置。
运行结果
1. 用户输入字符串,产生异常
2. 用户输入整数,程序正常执行
练习
1. 读懂代码,在关键的地方加上注释
2. 查看详细的错误信息,定位是哪一行代码出现了问题。
3. 去掉第39行 throw new Exception("转换出现异常");再次查看详细的错误信息,看看哪一行代码出现了问题。想想是什么原因。如果不明白,记得咨询我哦。
4. finally语句一定会执行吗?去掉main方法的try catch 语句,调试一下程序。
付费解答C#入门学习过程中碰到的各种问题。
零基础学习C#入门,大多数的问题都可以通过自学或借助互联网解决。
但是还是会有一些问题,不是那么容易解决,成为了你学习的绊脚石。最后甚至造成你学习的半途而废。通常学习C#编程入门,你会遇到20到30多个你不能很容易解决的问题。
这个时候,你最需要什么呢?
对!一个专业的老师给你帮助!
你在学习本课程中,遇到任何问题都可以通过qq或email想本教程作者进行求助。
只需30元,你就可以得到本教程作者的三次专业解答。所以你只需不到300元就可以顺利的完成C#入门,从此推开软件行业的大门。
付费方式非常简单:
用微信扫描下面的二维码。在付款留言中留下你的qq号或email地址就可以啦。
教育不是要便宜,而是要可靠!真正聪明的人,更懂得花钱让专业的人为自己服务,提高自己的效率。
老师qq:2040227296
老师email:2040227296@qq.com
以上是关于22 C#中的异常处理入门 try catch throw的主要内容,如果未能解决你的问题,请参考以下文章
SqlDataReader 和 T-SQL:在使用来自 C# 的“异步”调用时使用“try...catch”和“throw”时不会传播异常